マップのカスタム コンパレーター
C では、マップは比較関数を使用してキーと値のペアを整理します。デフォルトでは、マップの組み込み文字列コンパレータは文字列をアルファベット順に比較します。ただし、このコンパレータをオーバーライドして独自の比較基準を定義できます。
カスタム コンパレータの使用
独自の文字列コンパレータを定義するには、演算子を実装する構造体を作成します。 () 方法。このメソッドは 2 つの文字列を引数として受け取り、その順序を示すブール値を返す必要があります。
<code class="cpp">struct cmpByStringLength { bool operator()(const std::string& a, const std::string& b) const { return a.length() < b.length(); } };
このコンパレータは、文字列を長さの昇順で比較します。
カスタム コンパレータ
カスタム コンパレータを使用してマップを作成するには、それを 3 番目のテンプレート引数として指定します:
<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>
または、コンパレータをマップのコンストラクタに渡すこともできます:
<code class="cpp">std::map<std::string, std::string> myMap(cmpByStringLength());</code>
その他の並べ替えオプション
コンパレーターをオーバーライドすると、カスタム基準に基づいてマップを並べ替えることができます。長さで比較する場合、マップ内で一意のキーにできるのは各長さの 1 つの文字列のみであることに注意してください。
より複雑な並べ替えのニーズについては、Boost の multi_index コンテナなどのサードパーティ ライブラリを使用して検討することもできます。
以上がC マップのキーの並べ替えをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。