2013-09-30 12 views
5

ユーザー定義のクラスをstd::vectorに挿入してから、ソートメカニズムをオーバーロードして特定のデータメンバーを比較することができます。ただし、MyClassに2つのデータメンバーがあり、2番目のデータメンバーにソートの「2番目のレベル」を追加する場合は、どのようにしてstd::vector<MyClass>をソートしますか?したがって、データメンバーaをソートし、aが等しい場合は、データメンバーbをソートしますか?C++ 2つのデータメンバーに基づくオブジェクトの並べ替え

+0

a最初にしbを使用します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); } }; 

を使用してカスタムコンパレータを作成しますが、あなたが比較される2つのオブジェクト上で任意のコードを実行することができます。必要な数の「レベル」を追加することができます。 –

+0

1人のメンバーで比較するのと同じように。私は最初にそれを行う方法を学習することをお勧めします(これについては複数の質問があります)、最初に等しい場合は2番目のメンバーと比較するために書き込んだファンクタを単純に変更します。 – us2012

答えて

9

それはソートメカニズムをオーバーロード二

関連する問題