转载:http://blog.csdn.net/stpeace/article/details/51040218#cpp

看看如下代码的一个非常隐晦的错误, 虽然不会每次core dump, 但类似代码迟早会core dump, 好多人遇到过。 此问题极难定位, 看一下吧:

[cpp] view plaincopy
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5. struct Msg
  6. {
  7. int id;
  8. int score;
  9. };
  10. bool selfDefinedSort1( const Msg &m1, const Msg &m2)
  11. {
  12. if(m1.id > m2.id)
  13. {
  14. return false;
  15. }
  16. return true;
  17. }
  18. void addToVector(vector<Msg> & vecMsg, const int &id, const int &score)
  19. {
  20. Msg msg;
  21. msg.id = id;
  22. msg.score = score;
  23. vecMsg.push_back(msg);
  24. }
  25. void printVector(vector<Msg> &vecMsg)
  26. {
  27. for(vector<Msg>::iterator it = vecMsg.begin() ; it != vecMsg.end() ; it++ )
  28. {
  29. cout << it->id << '\t' << it->score << endl;
  30. }
  31. }
  32. int main()
  33. {
  34. vector<Msg> vecMsg;
  35. addToVector(vecMsg,9, 100);
  36. addToVector(vecMsg,8, 87);
  37. addToVector(vecMsg,6, 90);
  38. addToVector(vecMsg,6, 82);
  39. addToVector(vecMsg,5, 85);
  40. cout << "before Sort:" << endl;
  41. printVector(vecMsg);
  42. cout << "after Sort1:" << endl;
  43. sort(vecMsg.begin(), vecMsg.end(), selfDefinedSort1);
  44. printVector(vecMsg);
  45. return 0;
  46. }

如果肉眼能看出问题, 那说明确实有点水平, 如果看不出问题, 那也正常, 请看题目。

火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false相关推荐

  1. 不可不知的STL sort函数实现原理

    sort函数一直以来被认为是快排,今天看到一篇文章,感觉自己知道的太少. 建议大家还是要去啃<STL源码剖析>,我也要去读了,先立个flag,后续1-2个月写STL源码剖析上得到的启发. ...

  2. STL sort()函数详解

    西方有句谚语:不要重复发明轮子! STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已 ...

  3. JS对象 数组排序sort() sort()方法使数组中的元素按照一定的顺序排列。 语法: arrayObject.sort(方法函数)...

    数组排序sort() sort()方法使数组中的元素按照一定的顺序排列. 语法: arrayObject.sort(方法函数) 参数说明: 1.如果不指定<方法函数>,则按unicode码 ...

  4. 数组10— sort() : 对数组中的元素进行排序

    在上节,我们学习了如何使用 JavaScript Array some() 方法来检查数组中的至少一个元素是否通过了测试,错过的小伙伴可以点击文章<[JavaScript 教程]第六章 数组09 ...

  5. STL sort解析

    从上学接触到编程开始,到工作了几年.有关排序算法的内容反反复复有接触,但是要说每一种排序算法的细节都能说清,那就有难度了. 一来算法难度有深有浅.有比较简单的冒泡,插入,也有复杂的堆排序,快排这些. ...

  6. c语言sort函数排序二维数组,c++ - 如何使用stl sort函数根据第二列对二维数组进行排序? - 堆栈内存溢出...

    stl排序要求迭代器的rvalue作为参数传递. 如果你想使用sort函数,你必须在c ++ 11中编译并使用数组stl来存储数组. 代码如下 #include "bits/stdc++.h ...

  7. 18118 勇者斗恶龙(c++ STL sort的运用)

    18118 勇者斗恶龙 Description 有n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头).村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙 一个直径不超过x的头,且需要支付x个 ...

  8. ElasticSearch增删改查之python sort、scroll、scan

    1.用python操作elasticsearch有两个库可以调用 # ElasticSearch不支持scroll(分页查询)查询 from pyelasticsearch import Elasti ...

  9. stl向量最大值_C ++ STL中向量的最小和最大元素

    stl向量最大值 Given a vector and we have to find the smallest (minimum) and largest (maximum) elements. 给 ...

最新文章

  1. 计算机网络模型到底是七层?五层?四层?
  2. Flutter Widget
  3. tf.lookup.StaticHashTable 用法
  4. VMWare MAC系统调整磁盘
  5. 安全开发流程(SDL、微软)
  6. C语言const的用法
  7. Linux: Shared MIME
  8. cocos2d-x 之TableView
  9. java socket 连接原理_Java socket通信基本原理介绍
  10. 【干货】|800份实战经验PPT免费下载
  11. Spring核心技术
  12. java 斑马 打印不出来_通过PrintServer将原始ZPL发送到Zebra打印机不起作用
  13. 【源码分析】Spring Boot中Relaxed Binding机制的不同实现
  14. [置顶]CHENEY-YANG'S BLOG(cheney-yang)
  15. 查询学生的学号、课程号和成绩,并按成绩升序排序
  16. cad考试题库绘图题答案_最新CAD考试题库及答案-cad考试题库绘图题答案
  17. SYN_RECV状态相关
  18. 下载chromedriver
  19. 2010年中国电子商务软件十强企业
  20. ASP.NET:性能与缓存 转帖 张逸老师(http://www.cnblogs.com/wayfarer/articles/48347.aspx)...

热门文章

  1. 去除vue项目中的#及其ie9兼容性
  2. Introduction to the Optimizer --cbo
  3. mysql 表锁-解锁
  4. SQL Server有这些属性吗
  5. 一个从源代码里提取中文字符串的java类
  6. Sql Server 2008将数据库导出sql脚本并导出数据
  7. 网吧电影服务器解决方案完全指南(一)
  8. Android应用开发—重载fragment构造函数导致的lint errors
  9. 可以生成自动文档的注释
  10. 软件测试中的存根程序