C ++基于两个数据成员对对象进行排序

时间:2013-09-30 21:26:03

标签: c++ sorting vector stl

据我所知,您可以将用户定义的类插入到std::vector中,然后重载排序机制,以便对特定数据成员进行比较。但是,如何排序std::vector<MyClass> MyClass哪里有a有两个数据成员,并且您想在第二个数据成员上添加“第二级”排序?那么对数据成员ab相等的位置进行排序,然后对数据成员{{1}}进行排序?

1 个答案:

答案 0 :(得分: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);
      }
    };

首先使用a,然后使用b