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

sorting a vector according to some attribute in it

如果我有以下向量:

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。

我觉得你可以用this link作为参考:

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

当您从向量中获取两个对象时,使用 lambda 并定义应该为“>”的内容。