gpt4 book ai didi

c++ - 对 std::list 进行排序时,运算符 < 无效

转载 作者:IT老高 更新时间:2023-10-28 21:50:52 24 4
gpt4 key购买 nike

我有一个 std::list 图形边缘,我想根据边缘的目标出度和入度对边缘进行排序。但是在我的比较函数中,我得到了无效运算符 < 的异常,下面是我的代码。我的列表包含指向边缘的指针和边有目标节点作为它们的成员。

bool compareEdges(const Edge  *e1,const Edge *e2){
if(e1->destination->outdegree < e2->destination->outdegree){
return true;
}
else if(e1->destination->outdegree > e2->destination->outdegree){
return false;
}
else if(e1->destination->indegree > e2->destination->indegree){
return false;
}
return true;

}

这是对排序函数的调用。

currentNode->edgeList.sort(compareEdges);

请帮助我消除此异常。

enter image description here

谢谢

最佳答案

当两个相关字段相等时,您的比较器返回 true。这是无效的,因此很可能是 sort 实现通过 assert 检测到的。

您应该将“小于”谓词传递给 sort:正式地是“严格的弱顺序”。其他任何事情都是未定义的行为。在这种情况下,您似乎很幸运,并且实现检测到由于比较不一致而陷入了不可能的情况。

关于c++ - 对 std::list 进行排序时,运算符 < 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532224/

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