gpt4 book ai didi

c++ - 基于多种值类型对 vector 进行排序

转载 作者:行者123 更新时间:2023-11-28 05:55:30 24 4
gpt4 key购买 nike

我希望根据多个值对自定义结构进行排序...我已经处理过在自定义排序方法中使用 < > 必须按 2 个不同的数字进行排序的实例...除了这次我必须按 2 个 bool 值和一个数字排序。

struct MyStruct
{
B1 = false;
B2 = true;
N1 = 0;
}

现在...我希望它按以下方式排序...

任何使 B1 和 B2 为真的事物都排在第一位。接下来是任何具有 B1 的东西。

这 2 个部分也需要按 N1 排序(较低的 = 在前)

所以 B1 和 B2 需要按 N1 从低到高排序。其次是 B1 的有序 N1 从最低到最高。其次是从低到高排序的所有其他内容。

这是我到目前为止的尝试...

    if (lhs.boss && lhs.isLOS && lhs.distancetome < rhs.distancetome)
return true;
if (lhs.boss && lhs.isLOS && lhs.distancetome > rhs.distancetome)
return false;
if (lhs.boss && lhs.distancetome < rhs.distancetome)
return true;
if (lhs.boss && lhs.distancetome > rhs.distancetome)
return false;
if (lhs.distancetome < rhs.distancetome)
return true;

return false;

最佳答案

类似的东西:

struct complex_comparison
{
bool operator()(const MyStruct& lhs, const MyStruct& rhs)
{
return lhs.B1 && lhs.B2 != rhs.B1 && rhs.B2 ? lhs.B1 && lhs.B2 > rhs.B1 && rhs.B2 :
lhs.B1 != rhs.B1 ? lhs.B1 > rhs.B1 :
lhs.N1 < rhs.N1;
}
};

示例:http://coliru.stacked-crooked.com/a/b4888ac34d2ca6bb

关于c++ - 基于多种值类型对 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244436/

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