5

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

4

1 回答 1

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第二个

于 2013-09-30T21:31:10.583 回答