根据其中的某些属性对向量进行排序
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 并定义应该为“>”的内容。
如果我有以下向量:
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 并定义应该为“>”的内容。