簡體   English   中英

c++20 使用結構成員變量和 std::ranges 對結構進行排序向量

[英]c++20 Sorting Vector of structs with structs member variable and std::ranges

我有一個簡單的結構

struct MyStruct
{
    int x;
}

我有一個MyStruct的向量。

vector<MyStruct> myStructs;
int n = 10;

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

如何使用std::ranges根據成員變量.xmyStructs進行排序?

使用投影:

std::ranges::sort(myStructs, {}, &MyStruct::x); //< sort by x

由於您沒有提供成員operator< (或operator<=> ),您可以使用 lambda 來完成:

#include <algorithm>

std::ranges::sort(myStructs, [](auto& lhs, auto& rhs) { return lhs.x < rhs.x; });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM