0

我有一个简单的结构

struct MyStruct
{
    int x;
}

我有一个向量MyStructs。

vector<MyStruct> myStructs;
int n = 10;

for(auto i = 0; i < n; i++)
    myStructs.push_back(MyStruct{.x = n - i});

myStructs我将如何根据成员变量.x使用排序std::ranges

4

2 回答 2

4

使用投影:

std::ranges::sort(myStructs, {}, &MyStruct::x); //< sort by x
于 2021-02-27T13:59:03.420 回答
1

由于您没有提供成员operator<(或operator<=>),您可以使用 lambda 来完成:

#include <algorithm>

std::ranges::sort(myStructs, [](auto& lhs, auto& rhs) { return lhs.x < rhs.x; });
于 2021-02-27T12:27:14.960 回答