c++在用set和multiset时遇到的一个bug
2016-10-03 13:53
274 查看
今天在写一个程序时用到了set和multiset,因为我需要让其中的元素对降序排列,所以写了一个functor,为图省事,我只比较了pair中首个元素如下:
然后噩梦就开始了!刚开始我用的是set, 在我往set里面插入元素的时候居然没有成功.我知道set只能保存不同的元素,但是我的pair对中第二个元素是不一样的,找了将近一个小时打印各种数据都没发现错在哪里.然后下楼取拿了一盒牛奶,看到冰箱里还有邱聪的鸡爪,就啃着一个上楼了.我边吃边看代码,忽然想到在比较函数上好像有问题,如果首元素相等那么他就不会比较第二个元素了,好像就在插入的时候无法找到一个合适的位置插入就默认相等了,所以就放弃插入了,坑爹啊!所以改了一下比较函数就OK了.
struct cmp { bool operator()(pair<int, int> a, pair<int, int> b) { return a.first > b.first; } };
然后噩梦就开始了!刚开始我用的是set, 在我往set里面插入元素的时候居然没有成功.我知道set只能保存不同的元素,但是我的pair对中第二个元素是不一样的,找了将近一个小时打印各种数据都没发现错在哪里.然后下楼取拿了一盒牛奶,看到冰箱里还有邱聪的鸡爪,就啃着一个上楼了.我边吃边看代码,忽然想到在比较函数上好像有问题,如果首元素相等那么他就不会比较第二个元素了,好像就在插入的时候无法找到一个合适的位置插入就默认相等了,所以就放弃插入了,坑爹啊!所以改了一下比较函数就OK了.
struct cmp { bool operator()(pair<int, int> a, pair<int, int> b) { return a.first == b.first? a.second<b.second: a.first > b.first; } };
相关文章推荐
- 使用C++的map容器遇到的bug(map/set iterator not dereferencable)
- C++实现堆排序并记录编程中遇到的一个bug(不要对无符号整形数在--的循环中采用>=0作为结束条件)
- 使用C++的map容器遇到的bug(map/set iterator not dereferencable)
- C++ 在使用CHttpFile进行http通信的时候遇到了一个Bug
- Python搭建API,并通过Thrift 和C++进程通信,遇到了一个大BUG!
- wingdb开发过程中遇到一个比较“头疼”的bug
- wingdb开发过程中遇到一个比较“头疼”的bug
- 当在一个siliverlight 2.0工程中 添加webservice时 遇到错误:'Object reference not set to an instance of an object' 解决办法
- 单步执行遇到的离奇问题?一个简单的赋值语句都执行失败的bug
- FF升级2.0.0.6后的莫名其妙的一个BUG,不知道大家有没有遇到。。。
- 【原创】wingdb开发过程中遇到一个比较“头疼”的bug
- wingdb开发过程中遇到一个比较“头疼”的bug
- 今天遇到一个由于内存访问越界而引起的bug
- extJs4 中 panel 的 setTitle 的 一个显示 BUG
- 遇到的一个bug
- 遇到的一个bug
- 今天遇到的一个在main函数中打开TitleAreaDialog的bug
- 我遇到的一个BUG(一)
- 菜鸟学Python(5):IDLE的一个bug(怎么总遇到bug?)
- 昨天遇到一个orz的bug