根据其中的某个属性对矢量进行排序

时间:2015-08-22 19:20:32

标签: c++ algorithm sorting vector stdvector

如果我有以下载体:

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

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

3 个答案:

答案 0 :(得分:4)

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;
    }
);

答案 1 :(得分:1)

std::sort( v.begin(), v.end(), 
    []( const auto &p1, const auto &p2 ) { return p1.first.second > p2.first.second; } );  

如果您的编译器不支持自动lambda表达式,则必须明确指定向量元素的类型,例如使用typedef。

答案 2 :(得分:1)

我认为您可以使用this link作为参考:

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

使用lambda并定义应该是什么&#39;&gt;&#39;当你从矢量中得到两个物体时。