如何解决使用 C++ 排序比较多个字段的 Lambda 表达式
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;
}
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。