本文介绍了C ++根据两个数据成员对对象进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我知道您可以将用户定义的类插入到std::vector
中,然后重载排序机制,以便在特定数据成员上进行比较.但是,如何对std::vector<MyClass>
进行排序,其中MyClass
有两个数据成员,并且要在第二个数据成员上添加第二级"排序?因此,对数据成员a
排序,其中a
相等,然后对数据成员b
排序?
I understand you can insert a user-defined class in to a std::vector
and then overload the sorting mechanism so that it compares on a particular data member. However, how would you sort a std::vector<MyClass>
where MyClass
has two data members and you want to add a "second level" of sorting on the second data member? So sort on data member a
and where a
is equal, then sort on data member b
?
推荐答案
使用 std::tuple
#include <tuple>
//..
struct comp
{
bool operator()(const MyClass& lhs, const MyClass& rhs) const
{
return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b);
}
};
它将首先使用a
,然后使用b
It will use a
first and then b
second
这篇关于C ++根据两个数据成员对对象进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!