ホームページ > バックエンド開発 > C++ > 標準ライブラリを使用してユーザー定義型を並べ替えることはできますか?

標準ライブラリを使用してユーザー定義型を並べ替えることはできますか?

Barbara Streisand
リリース: 2024-11-11 11:39:03
オリジナル
173 人が閲覧しました

Can You Sort User-Defined Types with the Standard Library?

標準ライブラリを使用したユーザー定義型の並べ替え

ユーザー定義のデータ型のコレクションを並べ替える場合、プログラマは多くの場合、これらの型内の特定のフィールドまたはプロパティに基づく並べ替え順序。この質問では、標準ライブラリの並べ替え機能がそのようなカスタマイズ可能な並べ替えに対応できるかどうかを検討します。

標準並べ替えの使用

標準ライブラリは、要素内の要素の並べ替えを可能にする並べ替えメソッドを提供します。容器。このメソッドは内部的に < を呼び出します。演算子が順序を決定します。ユーザー定義型の標準ソートを利用するには、型で < を実装する必要があります。

たとえば、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート