问题描述
std::sort(std::execution::par,pidx.begin(),pidx.end(),[&P](int i,int j) {
return P[i].obj[0]<P[j].obj[0];
}
);
但是当比较多个字段时,它因运行时错误而失败。
std::sort(std::execution::par,int j) {
for (int k = 0; k < 3; k++)
if (P[i].obj[k] < P[j].obj[k])
return true;
return false;
}
);
运行时错误如下,
调试断言失败!
文件 C:\Program Files(x86)\Microsoft Visual Studio2019\Community\VC\Tools\MSVC\14.28.22910\inclue\xutility
行:1626
表达式:无效的比较器
有关您的程序如何导致断言失败的信息,请参阅有关断言的可视化 C++ 文档。
感谢您的帮助。
解决方法
我找到了解决办法,比较lambda函数不正确。
std::sort(std::execution::par,pidx.begin(),pidx.end(),[&P](int i,int j) {
for (int k = 0; k < 3; k++)
if (P[i].obj[k] != P[j].obj[k])
return P[i].obj[k] < P[j].obj[k];
return false;
}
);