c++的sort出现Segmentation fault (core dumped),该怎么解决
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,则,不管多长都不会出错,到底是为什么呢?
------解决思路----------------------
<= 换成 < 试试
------解决思路----------------------
用小于而不是小于等于
STL中sort比较函数使用的是strict weak order
------解决思路----------------------
楼主:
string可以直接比较,为什么你还要c_str()?
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,则,不管多长都不会出错,到底是为什么呢?
------解决思路----------------------
<= 换成 < 试试
------解决思路----------------------
用小于而不是小于等于
STL中sort比较函数使用的是strict weak order
------解决思路----------------------
楼主:
string可以直接比较,为什么你还要c_str()?