Code Bye

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

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,则,不管多长都不会出错,到底是为什么呢?
解决方案:8分
<= 换成 < 试试
解决方案:10分
用小于而不是小于等于
STL中sort比较函数使用的是strict weak order
解决方案:2分
LZ:
string可以直接比较,为什么你还要c_str()?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++的sort出现Segmentation fault (core dumped)