小编Car*_*rre的帖子

在C ++中使用Lambda函数进行排序

我不明白以下简单的排序代码有什么问题。它可以编译,但是在我尝试运行它时会产生分段错误。

我知道还有其他方法可以进行相同的排序,并且我使用的值都是相同的(因此,没有任何排序的方法),但是我想了解为什么它会产生细分错误。

如果我使用w[1][i]>w[1][j]而不是w[1][i]>=w[1][j]在比较器中没有问题。

vector<int> a(100);
iota(a.begin(),a.end(),0);
vector<vector<int> >  w(2,vector<int>(100,1));
sort(a.begin(),a.end(),[&w](const int i,const int j){return w[0][i]>w[0][j] || (w[0][i]==w[0][j] && w[1][i]>=w[1][j]);});
Run Code Online (Sandbox Code Playgroud)

c++ sorting

2
推荐指数
1
解决办法
102
查看次数

标签 统计

c++ ×1

sorting ×1