火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false
来源:互联网 发布:java求大于n最小素数 编辑:程序博客网 时间:2024/05/01 14:57
看看如下代码的一个非常隐晦的错误, 虽然不会每次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;}如果肉眼能看出问题, 那说明确实有点水平, 如果看不出问题, 那也正常, 请看题目。
0 0
- 火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false
- 火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false
- Effective STL: Item 21:永远让比较函数对相同元素返回false
- 关联容器:永远让比较函数对相等的值返回false
- Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)
- Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)
- Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false) .
- Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)
- Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)
- effective stl 第21条:总是让比较函数在等值情况下返回false
- STL sort算法中的比较函数
- STL sort算法中的比较函数
- 秒杀stl sort coredump问题
- 相同字符串比较却返回false(提取cookie内容出现的小问题)
- STL中sort、priority_queue、map、set的自定义比较函数
- STL中sort、priority_queue、map、set的自定义比较函数
- sort()函数 多个元素排序比较
- STL sort函数--对map按值排序
- Go语言版HelloWorld
- Linux系统如何创建一个新进程
- NodeJS、NPM安装配置步骤(windows版本)
- 叶问
- 重装系统后怎么处理Mysql数据库
- 火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false
- 1.JAVA 编程思想——对象入门
- Python学习def函数的定义、使用及参数传递
- 2.JAVA编程思想——一切都是对象
- KL divergence
- JAVA分治法之二分法实现
- FormShow 为什么执行两次
- 3.JAVA编程思想——第一个 JAVA程序
- TCP的三次握手和四次挥手