5

std::vectorユーザー定義のクラスを に挿入し、並べ替えメカニズムをオーバーロードして、特定のデータ メンバーで比較できることを理解しています。ただし、 2 つのデータ メンバーがあり、2 番目のデータ メンバーに "第 2 レベル" の並べ替えを追加するには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し、次にb2番目に使用します

于 2013-09-30T21:31:10.583 に答える