C 連想コンテナの透過的コンパレータ
透過的コンパレータの概念を理解する
C の14 では、連想コンテナーに「透明」として知られる新しい概念が導入されました。コンパレータ。」標準によれば、メンバー関数テンプレート find、count、 lower_bound、upper_bound、equal_range は、Compare::is_transparent 型が存在する場合にのみオーバーロードの解決に参加します。
透過的なコンパレーターは、ネストされた is_transparent を定義する型です。タイプ。この型は、コンパレータが異種ルックアップに対して透過的であるとみなす必要があることを連想コンテナに通知します。その結果、コンテナは、コンテナのキー タイプと、そのキー タイプに相当するさまざまなタイプとの間の比較を実行できるようになりました。
透過的コンパレータの利点
透過的コンパレータ連想コンテナにおける異種検索の問題を解決します。従来、コンテナは、コンテナのキー タイプと同じタイプのキーでのみ検索できました。透過的コンパレータを使用すると、キーのタイプに相当する値でコンテナを検索できますが、同じタイプである必要はありません。
透過的コンパレータの実装
C 14 は、透明なコンパレーターを定義するために使用できる、less と呼ばれるライブラリ テンプレート。 less テンプレートには、void に特化し、任意の型の比較を可能にするデフォルトの実装があります。 std::less
標準コンテナへの影響
はじめに透明なコンパレータの場合、透明なコンパレータが指定されている場合にのみ、連想コンテナの動作が変更されます。 使用済み。デフォルトでは、コンテナは元の動作を保持します。 std::less
提供された例では、std::set
以上が透過的コンパレーターはどのようにして C 連想コンテナーでの異種ルックアップを可能にしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。