c ++ 20对具有结构成员变量和std::ranges的结构进行排序向量
c++20 Sorting Vector of structs with structs member variable and std::ranges
我有一个简单的结构
struct MyStruct
{
int x;
}
我有一个 MyStruct
s 的矢量。
vector<MyStruct> myStructs;
int n = 10;
for(auto i = 0; i < n; i++)
myStructs.push_back(MyStruct{.x = n - i});
如何使用 std::ranges
根据成员变量 .x
对 myStructs
进行排序?
由于您没有提供成员 operator<
(或 operator<=>
),您可以使用 lambda 来完成:
#include <algorithm>
std::ranges::sort(myStructs, [](auto& lhs, auto& rhs) { return lhs.x < rhs.x; });
使用投影:
std::ranges::sort(myStructs, {}, &MyStruct::x); //< sort by x
我有一个简单的结构
struct MyStruct
{
int x;
}
我有一个 MyStruct
s 的矢量。
vector<MyStruct> myStructs;
int n = 10;
for(auto i = 0; i < n; i++)
myStructs.push_back(MyStruct{.x = n - i});
如何使用 std::ranges
根据成员变量 .x
对 myStructs
进行排序?
由于您没有提供成员 operator<
(或 operator<=>
),您可以使用 lambda 来完成:
#include <algorithm>
std::ranges::sort(myStructs, [](auto& lhs, auto& rhs) { return lhs.x < rhs.x; });
使用投影:
std::ranges::sort(myStructs, {}, &MyStruct::x); //< sort by x