ホームページ > バックエンド開発 > C++ > 透過的コンパレーターはどのようにして C 連想コンテナーでの異種ルックアップを可能にしますか?

透過的コンパレーターはどのようにして C 連想コンテナーでの異種ルックアップを可能にしますか?

DDD
リリース: 2024-12-23 02:55:13
オリジナル
111 人が閲覧しました

How Do Transparent Comparators Enable Heterogeneous Lookup in C   Associative Containers?

C 連想コンテナの透過的コンパレータ

透過的コンパレータの概念を理解する

C の14 では、連想コンテナーに「透明」として知られる新しい概念が導入されました。コンパレータ。」標準によれば、メンバー関数テンプレート find、count、 lower_bound、upper_bound、equal_range は、Compare::is_transparent 型が存在する場合にのみオーバーロードの解決に参加します。

透過的なコンパレーターは、ネストされた is_transparent を定義する型です。タイプ。この型は、コンパレータが異種ルックアップに対して透過的であるとみなす必要があることを連想コンテナに通知します。その結果、コンテナは、コンテナのキー タイプと、そのキー タイプに相当するさまざまなタイプとの間の比較を実行できるようになりました。

透過的コンパレータの利点

透過的コンパレータ連想コンテナにおける異種検索の問題を解決します。従来、コンテナは、コンテナのキー タイプと同じタイプのキーでのみ検索できました。透過的コンパレータを使用すると、キーのタイプに相当する値でコンテナを検索できますが、同じタイプである必要はありません。

透過的コンパレータの実装

C 14 は、透明なコンパレーターを定義するために使用できる、less と呼ばれるライブラリ テンプレート。 less テンプレートには、void に特化し、任意の型の比較を可能にするデフォルトの実装があります。 std::less (Cmp は透過的なコンパレータ) を指定すると、連想コンテナで異種混合ルックアップが可能になります。

標準コンテナへの影響

はじめに透明なコンパレータの場合、透明なコンパレータが指定されている場合にのみ、連想コンテナの動作が変更されます。 使用済み。デフォルトでは、コンテナは元の動作を保持します。 std::less などの透過的なコンパレーターを使用すると、コンテナーは異種ルックアップを実行できるようになります。

提供された例では、std::set std::set は透過的なコンパレータを持ち、異種混合ルックアップを可能にします。しません。

以上が透過的コンパレーターはどのようにして C 連想コンテナーでの異種ルックアップを可能にしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート