gpt4 book ai didi

c++ - 按两个条件对 Lambda 表达式 C++ 进行排序

转载 作者:行者123 更新时间:2023-11-30 02:25:54 24 4
gpt4 key购买 nike

我正在尝试对列表中的数据进行排序。我需要那种类型

if a>b sort by a,b
else if a==b sort by c,d

我这样做是因为它不起作用。

l_name->sort([](type*& s1, type*& s2)
{
if (s1->a() > s2->b())
return s1->a() > s2->b()
else if(s1->a() == s2->b())
return s1->c() > s2->d();
});

最佳答案

你不能用那样的比较函数来排序,因为它定义的排序规则在内部是不一致的。为了排序,X < Y必须暗示 Y < X是假的。

考虑这两个对象:

Name a b
---- - -
X 2 1
Y 2 1

无论怎么比较,X > YY > X ,你会得到 true ,因为 X.a > Y.bY.a > X.b .

甚至X > XY > Y会产生true ,这绝不能发生。

因此,您应该根据比较相同的属性来定义比较规则。否则,您将违反自反性和传递性规则。

关于c++ - 按两个条件对 Lambda 表达式 C++ 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43557771/

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