標準ライブラリを使用したユーザー定義型の並べ替え
ユーザー定義のデータ型のコレクションを並べ替える場合、プログラマは多くの場合、これらの型内の特定のフィールドまたはプロパティに基づく並べ替え順序。この質問では、標準ライブラリの並べ替え機能がそのようなカスタマイズ可能な並べ替えに対応できるかどうかを検討します。
標準並べ替えの使用
標準ライブラリは、要素内の要素の並べ替えを可能にする並べ替えメソッドを提供します。容器。このメソッドは内部的に < を呼び出します。演算子が順序を決定します。ユーザー定義型の標準ソートを利用するには、型で < を実装する必要があります。
たとえば、MyType 構造体を考えてみましょう。
struct MyType { int a; int b; };
標準の並べ替えを使用してフィールドに基づいて MyType のベクトルを並べ替えるには、 <;次のような演算子:
bool operator < (const MyType& other) const { return this->a < other.a; }</p> <p>この実装では、次を使用してベクトルを並べ替えることができます:</p> <pre class="brush:php;toolbar:false">std::sort(moo.begin(), moo.end());
カスタム順序関数の使用
あるいは、< を実装する代わりに、演算子を使用すると、カスタム順序付け関数を 3 番目の引数として sort メソッドに渡すことができます。この関数は、2 つの要素間の順序関係を示すブール値を返します。
たとえば、MyType の b フィールドに基づいて並べ替えるには、
bool compareByB(const MyType& t1, const MyType& t2) { return t1.b < t2.b; }
次のように並べ替えを呼び出します。
std::sort(moo.begin(), moo.end(), compareByB);
このアプローチにより、特に複数の順序付け基準が必要な場合に、並べ替え順序をより柔軟に指定できます。
以上が標準ライブラリを使用してユーザー定義型を並べ替えることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。