火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false
转载:http://blog.csdn.net/stpeace/article/details/51040218#cpp
看看如下代码的一个非常隐晦的错误, 虽然不会每次core dump, 但类似代码迟早会core dump, 好多人遇到过。 此问题极难定位, 看一下吧:
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- struct Msg
- {
- int id;
- int score;
- };
- bool selfDefinedSort1( const Msg &m1, const Msg &m2)
- {
- if(m1.id > m2.id)
- {
- return false;
- }
- return true;
- }
- void addToVector(vector<Msg> & vecMsg, const int &id, const int &score)
- {
- Msg msg;
- msg.id = id;
- msg.score = score;
- vecMsg.push_back(msg);
- }
- void printVector(vector<Msg> &vecMsg)
- {
- for(vector<Msg>::iterator it = vecMsg.begin() ; it != vecMsg.end() ; it++ )
- {
- cout << it->id << '\t' << it->score << endl;
- }
- }
- int main()
- {
- vector<Msg> vecMsg;
- addToVector(vecMsg,9, 100);
- addToVector(vecMsg,8, 87);
- addToVector(vecMsg,6, 90);
- addToVector(vecMsg,6, 82);
- addToVector(vecMsg,5, 85);
- cout << "before Sort:" << endl;
- printVector(vecMsg);
- cout << "after Sort1:" << endl;
- sort(vecMsg.begin(), vecMsg.end(), selfDefinedSort1);
- printVector(vecMsg);
- return 0;
- }
如果肉眼能看出问题, 那说明确实有点水平, 如果看不出问题, 那也正常, 请看题目。
火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false相关推荐
- 不可不知的STL sort函数实现原理
sort函数一直以来被认为是快排,今天看到一篇文章,感觉自己知道的太少. 建议大家还是要去啃<STL源码剖析>,我也要去读了,先立个flag,后续1-2个月写STL源码剖析上得到的启发. ...
- STL sort()函数详解
西方有句谚语:不要重复发明轮子! STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已 ...
- JS对象 数组排序sort() sort()方法使数组中的元素按照一定的顺序排列。 语法: arrayObject.sort(方法函数)...
数组排序sort() sort()方法使数组中的元素按照一定的顺序排列. 语法: arrayObject.sort(方法函数) 参数说明: 1.如果不指定<方法函数>,则按unicode码 ...
- 数组10— sort() : 对数组中的元素进行排序
在上节,我们学习了如何使用 JavaScript Array some() 方法来检查数组中的至少一个元素是否通过了测试,错过的小伙伴可以点击文章<[JavaScript 教程]第六章 数组09 ...
- STL sort解析
从上学接触到编程开始,到工作了几年.有关排序算法的内容反反复复有接触,但是要说每一种排序算法的细节都能说清,那就有难度了. 一来算法难度有深有浅.有比较简单的冒泡,插入,也有复杂的堆排序,快排这些. ...
- c语言sort函数排序二维数组,c++ - 如何使用stl sort函数根据第二列对二维数组进行排序? - 堆栈内存溢出...
stl排序要求迭代器的rvalue作为参数传递. 如果你想使用sort函数,你必须在c ++ 11中编译并使用数组stl来存储数组. 代码如下 #include "bits/stdc++.h ...
- 18118 勇者斗恶龙(c++ STL sort的运用)
18118 勇者斗恶龙 Description 有n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头).村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙 一个直径不超过x的头,且需要支付x个 ...
- ElasticSearch增删改查之python sort、scroll、scan
1.用python操作elasticsearch有两个库可以调用 # ElasticSearch不支持scroll(分页查询)查询 from pyelasticsearch import Elasti ...
- stl向量最大值_C ++ STL中向量的最小和最大元素
stl向量最大值 Given a vector and we have to find the smallest (minimum) and largest (maximum) elements. 给 ...
最新文章
- 计算机网络模型到底是七层?五层?四层?
- Flutter Widget
- tf.lookup.StaticHashTable 用法
- VMWare MAC系统调整磁盘
- 安全开发流程(SDL、微软)
- C语言const的用法
- Linux: Shared MIME
- cocos2d-x 之TableView
- java socket 连接原理_Java socket通信基本原理介绍
- 【干货】|800份实战经验PPT免费下载
- Spring核心技术
- java 斑马 打印不出来_通过PrintServer将原始ZPL发送到Zebra打印机不起作用
- 【源码分析】Spring Boot中Relaxed Binding机制的不同实现
- [置顶]CHENEY-YANG'S BLOG(cheney-yang)
- 查询学生的学号、课程号和成绩,并按成绩升序排序
- cad考试题库绘图题答案_最新CAD考试题库及答案-cad考试题库绘图题答案
- SYN_RECV状态相关
- 下载chromedriver
- 2010年中国电子商务软件十强企业
- ASP.NET:性能与缓存 转帖 张逸老师(http://www.cnblogs.com/wayfarer/articles/48347.aspx)...