C 14 の透過コンパレーター
C 14 では、メンバー関数テンプレートの find、count、 lower_bound、 upper_bound とequal_range では、オーバーロードに参加するために透過的なコンパレータが必要になりました
透過的コンパレータの目的
透過的コンパレータは、連想コンテナでの異種検索の問題を解決することを目的としています。 C 14 より前では、連想コンテナーは、コンテナーのキーとして正確なタイプのキーを使用した検索のみを実行できました。ただし、多くのシナリオでは、コンテナのキー タイプに変換可能なキーを使用した検索を許可することが望ましいです。
透過的コンパレータの例
次の例は、透過的なコンパレータ:
template <> struct less<> { template <class T, class U> auto operator()(T&& t, U&& u) const -> decltype(std::forward<T>(t) < std::forward<U>(u)); typedef *unspecified* is_transparent; };
このコンパレータは異種タイプで使用できます。
標準コンテナへの影響
デフォルトでは、標準コンテナは透過的なコンパレータを使用しません。ただし、明示的に std::less<> を使用すると、または、連想コンテナをインスタンス化するときに別の透過コンパレータを使用すると、新しい機能を有効にすることができます。
問題の解決策
透過コンパレータを使用すると、連想コンテナがキーを使用して検索を実行できるようになりますコンテナのキータイプに変換可能です。これにより、特に異種検索が必要なシナリオにおいて、連想コンテナの柔軟性と有用性が大幅に拡張されます。
結論
C 14 での透過的なコンパレータの導入により、強力なコンパレータが提供されます。連想コンテナーでの異種検索のメカニズム。透過的なコンパレータを利用することで、開発者はコンパレータが提供する柔軟性と利便性を活用できます。
以上が透過的コンパレーターは C 14 連想コンテナーでの異種検索をどのように強化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。