C の標準マップを使用すると、キーのデフォルトのコンパレーター (通常は文字列の辞書編集型) を使用してキー比較が実行されます。ただし、独自の比較ロジックを定義する必要があるシナリオもあります。
キー比較のカスタマイズ:
デフォルトのコンパレータをオーバーライドするには、カスタム コンパレータをマップを構築するときの 3 番目のテンプレート パラメーター。たとえば、文字列の長さに基づいてキーを比較するには:
<code class="cpp">struct LengthComparator { bool operator()(const std::string& lhs, const std::string& rhs) const { return lhs.length() < rhs.length(); } }; std::map<std::string, std::string, LengthComparator> lengthMap;</code>
マップを並べ替える別の方法:
カスタム コンパレータを定義したくない場合は、次のようにします。他のメソッドを使用してマップを並べ替えることもできます:
注: キーを長さで比較する場合は、次の点に注意してください。マップ内のキーとして存在できるのは、各長さのインスタンスが 1 つだけであること。
以上がC マップでキー コンパレータをオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。