ホームページ  >  記事  >  バックエンド開発  >  C マップのキーの並べ替えをカスタマイズするにはどうすればよいですか?

C マップのキーの並べ替えをカスタマイズするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 22:14:30990ブラウズ

How to Customize the Sorting of Keys in C   Maps?

マップのカスタム コンパレーター

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。