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

use*_*112 5 c++ sorting stl vector

我知道你可以在a中插入一个用户定义的类std::vector,然后重载排序机制,以便比较特定的数据成员.但是,您如何对具有两个数据成员的std::vector<MyClass>位置MyClass进行排序,并且您希望在第二个数据成员上添加"第二级"排序?那么排序数据成员a和哪里a相等,然后排序数据成员b

P0W*_*P0W 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);
      }
    };
Run Code Online (Sandbox Code Playgroud)

它将a首先使用,然后使用b第二个