5
我知道您可以将用户定义的类插入到std::vector
中,然后重载排序机制,以便在特定数据成员上进行比较。但是,如何对std::vector<MyClass>
进行排序,其中MyClass
有两个数据成员,并且您希望在第二个数据成员上添加“第二级”排序?所以排序数据成员a
和a
是相等的,然后排序数据成员b
?C++根据两个数据成员对对象进行排序
我知道您可以将用户定义的类插入到std::vector
中,然后重载排序机制,以便在特定数据成员上进行比较。但是,如何对std::vector<MyClass>
进行排序,其中MyClass
有两个数据成员,并且您希望在第二个数据成员上添加“第二级”排序?所以排序数据成员a
和a
是相等的,然后排序数据成员b
?C++根据两个数据成员对对象进行排序
创建使用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
秒
重载排序机制,允许您在两个对象执行任意代码进行比较。您应该可以根据需要添加尽可能多的“级别”。 –
就像你会做一个单一成员的比较。我建议先学习如何做到这一点(关于这个有多个问题),然后简单地修改你写的仿函数,如果第一个成员是平等的,就在第二成员上进行比较。 – us2012