根据向量中的某些属性对向量进行排序

sorting a vector according to some attribute in it

本文关键字:向量 属性 排序      更新时间:2023-10-16

如果我有以下向量:

vector< pair < pair< char,int >,pair< int,int > > >

如何使用<algorithm>库根据第一对中的整数部分按降序排序?(我想用sort(vector.begin() , vector.end() )

using MyVector = vector< pair < pair< char,int >,pair< int,int > > >;
MyVector v;
std::sort(v.begin(), v.end(),
    [](const MyVector::value_type& a, const MyVector::value_type& b) {
      return a.first.second > b.first.second;
    }
);
std::sort( v.begin(), v.end(), 
    []( const auto &p1, const auto &p2 ) { return p1.first.second > p2.first.second; } );  

如果你的编译器在lambda表达式中不支持auto,那么你必须明确地指定向量元素的类型,例如使用typedef。

我想你可以使用这个链接作为参考:

sort(mMyClassVector.begin(), mMyClassVector.end(), 
    [](const MyClass & a, const MyClass & b) -> bool
{ 
    return a.mProperty > b.mProperty; 
});

当你从向量中得到两个对象时,使用lambda并定义'>'。