c++的sort出现Segmentation fault (core dumped)

damaoshan 2015-11-13 05:48:18
bool s_cmp(const string &s1, const string &s2)
{
return strcmp(s1.c_str(), s2.c_str())<=0; //<=0: right order; >0: swap
}


main函数中
vector<string>tmp_vec;
sort(tmp_vec.begin(), tmp_vec.end(), s_cmp);

如果tmp_vec不是很长,就不会出错,一旦很长,就会出错

但是不用自定义的s_cmp,则,不管多长都不会出错,到底是为什么呢?
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
damaoshan 2015-11-13
  • 打赏
  • 举报
回复
感谢各位,运行成功, 2楼和3楼说的很对! 4楼说的也很对 谢谢各位!
damaoshan 2015-11-13
  • 打赏
  • 举报
回复
引用 3 楼 yshuise 的回复:
楼主: string可以直接比较,为什么你还要c_str()?
好的,我是菜鸟,哈哈哈
yshuise 2015-11-13
  • 打赏
  • 举报
回复
楼主: string可以直接比较,为什么你还要c_str()?
paschen 版主 2015-11-13
  • 打赏
  • 举报
回复
用小于而不是小于等于 STL中sort比较函数使用的是strict weak order
dustpg 2015-11-13
  • 打赏
  • 举报
回复
<= 换成 < 试试

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧