-6ren">
gpt4 book ai didi

c++ - 段错误 : C++ sort an string vector with lambda comparator

转载 作者:行者123 更新时间:2023-11-30 00:46:11 30 4
gpt4 key购买 nike

int main() {
vector<string> v(100, "0");
auto comp = [](const string& first, const string& second)->bool {
return first.compare(second) <= 0;
};
sort(v.begin(), v.end(), comp);
for(auto s : v) {
cout<<s<<endl;
}
return 0;
}

以上 c++ 代码在 g++ v4.9.2 中出现段错误。它是如此有线。谁知道发生了什么事?

最佳答案

您的比较函数无效。它在非自反性(comp(x, x) 永远不应该为真)和不对称性(如果 comp(x, y) 为真,则 comp(y, x) 必须为假)上都失败了),它们都是 strict weak ordering 的一部分哪个std::sort需要它的比较器。 operator<operator>满足这个要求。但是operator<=operator>=不要。

如果您将比较函数更改为:

auto comp = [](const string& first, const string& second)->bool {
return first.compare(second) < 0;
};

它会起作用的。当然,这在功能上与默认设置相同,因此您可以这样做:

sort(v.begin(), v.end());

关于c++ - 段错误 : C++ sort an string vector with lambda comparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433709/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com