透過的コンパレーター: 連想コンテナーの検索機能の強化
C 14 では、連想コンテナーに重要な変更が導入されました。 [associative.reqmts]/13 で述べられているように、メンバー関数テンプレート find、count、 lower_bound、upper_bound、equal_range は、型 Compare::is_transparent が存在する場合にのみオーバーロード解決に参加します。
目的透明なコンパレータ
コンパレータを「透明」にする目的は、連想コンテナのルックアップ機能。コンパレータを透過的にできるようにすることで、開発者はキー タイプ自体の使用に制約されるのではなく、コンテナのキーと同等のタイプを利用できるようになります。これにより、より柔軟で効率的な検索シナリオが可能になります。
実装と使用法
C 14 では、透過的なコンパレータの作成を容易にする std::less などのライブラリ テンプレートが導入されています。
template <class T = void> struct less { // ... typedef *unspecified* is_transparent; }; template <> struct less<void> { // ... typedef *unspecified* is_transparent; };
この例では、std::set 連想コンテナへの影響 注目すべきことに、この変更は、すぐに使える標準コンテナのデフォルトの動作には影響しません。これらは、主要な比較基準としてキー タイプを使用して、これまでと同様に動作し続けます。 ただし、std::less<> を利用することで、透過的なコンパレーターやその他の互換性のある代替手段を使用すると、開発者は連想コンテナーでの異種ルックアップの拡張機能を利用できるようになります。これにより、コンテナのキーのタイプとは異なる可能性のあるタイプを使用して比較を実行できるようになり、柔軟性と汎用性が向上します。
以上が透過的コンパレーターは C 14 連想コンテナーのルックアップをどのように強化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。