如果我有以下载体:
vector< pair < pair< char,int >,pair< int,int > > >
如何根据第一对中的整数部分使用<algorithm>
库按降序排序?
(我想使用sort(vector.begin() , vector.end() )
答案 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;当你从矢量中得到两个物体时。