std::vector
ユーザー定義のクラスを に挿入し、並べ替えメカニズムをオーバーロードして、特定のデータ メンバーで比較できることを理解しています。ただし、 2 つのデータ メンバーがあり、2 番目のデータ メンバーに "第 2 レベル" の並べ替えを追加するにはstd::vector<MyClass>
、どのように並べ替えますか? MyClass
データメンバーでソートしa
、どこa
が等しいか、次にデータメンバーでソートしますb
か?
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
2番目に使用します
于 2013-09-30T21:31:10.583 に答える