2013-09-30 165 views
5

我知道您可以将用户定义的类插入到std::vector中,然后重载排序机制,以便在特定数据成员上进行比较。但是,如何对std::vector<MyClass>进行排序,其中MyClass有两个数据成员,并且您希望在第二个数据成员上添加“第二级”排序?所以排序数据成员aa是相等的,然后排序数据成员bC++根据两个数据成员对对象进行排序

+0

重载排序机制,允许您在两个对象执行任意代码进行比较。您应该可以根据需要添加尽可能多的“级别”。 –

+0

就像你会做一个单一成员的比较。我建议先学习如何做到这一点(关于这个有多个问题),然后简单地修改你写的仿函数,如果第一个成员是平等的,就在第二成员上进行比较。 – us2012

回答

9

创建使用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); 
     } 
    }; 

自定义比较它将使用ab

相关问题