码迷,mamicode.com
首页 > 其他好文 > 详细

set小记

时间:2019-10-23 22:23:18      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:问题   F12   初始   变量   比较   莫名其妙   span   重定义   内部数据   

2019.10.23

想用vector做CF1249D的,

结果TLE了,原因是insert()函数是O(n)插入的;

听说大佬们都是用的set,可我还不会,

于是我就打算用set做这道题,并从中学习set及迭代器的用法。

 

磨了一上午代码终于打完了,结果测样例就WA了,还错的莫名其妙。

然后调了一整天代码终于发现问题了:

我在结构体重定义‘<‘的时候只比较了其中一个变量的大小,

因为对于该问题其它变量的大小是无关紧要的。

但是set判断两个元素是否相同是通过比较大小来完成的,

我定义的‘<‘只比较了结构体中一个变量的大小,

因此只要这个变量相同,set即判定为相同元素,

由于set会去重,就把其它该变量相等的元素删掉了,

导致本来不同的结构体没有被放进集合,就出问题了。

 

另外在调试过程中还发现了set.end()返回的是一个计数的元素,

储存的是set.size()即set中元素的数量,

如果是一个结构体则把size存在第一个变量里面,

其它变量初始化为0(Windows中是这样,Linux就不知道了)。

 

最后吐槽一句:STL调试真难受啊,内部数据一个都看不了,

iterator迭代器都不知道下一个往哪跳,找问题还要大脑模拟计算过程。

好在这一下午的功夫没白费,还是学到了不少的。(终于真正会用迭代器了)

 

晚上写下这个小记进一步加深印象,算是set入门了吧。

(至少不像以前那样只记得有什么函数,使用起来一脸懵的样子了)

 

set小记

标签:问题   F12   初始   变量   比较   莫名其妙   span   重定义   内部数据   

原文地址:https://www.cnblogs.com/AppleC/p/11728979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!