透明なコンパレータを使用した C 14 の連想コンテナの変更
C 14 では、連想コンテナに大幅な変更が導入され、「透明なコンパレータ」が可能になりました。 」この変更では、型 Compare::is_transparent が存在しない限り、find、count、 lower_bound、upper_bound、equal_range メンバー関数テンプレートがオーバーロード解決に参加しないことが必要です。
透過コンパレーターの目的
透過的なコンパレータを使用すると、キーのタイプとは異なるタイプを使用して、連想コンテナ内の要素を比較できます。これにより、連想コンテナの機能が拡張され、より柔軟で効率的なルックアップが可能になります。
利点と変更
この変更は、異種ルックアップ シナリオに利点をもたらし、異なるものの直接比較が可能になります。コンテナ内のデータ型。ただし、デフォルトでの標準コンテナの動作が根本的に変更されるわけではありません。透過的なコンパレータ (std::less<> など) が明示的に使用されていない場合、コンテナは以前と同様に動作し続けます。
既存のコードへの影響
std::set のデフォルトのコンパレータは暗黙的に Key = を指定するようになりました。 std::less。そのため、デフォルトのコンパレータを使用する既存のコードは変更されません。異種混合ルックアップを選択するには、透過的コンパレータのタイプを明示的に指定する必要があります (例: std::set
要約すると、C 14 の透過的コンパレータは拡張機能を提供します。連想コンテナの場合、より多様なデータ比較が可能になります。ただし、透過的なコンパレーターはデフォルトで無効になっており、必要に応じて既存のコードに安全に採用できることに注意することが重要です。
以上がC 14 の透過的コンパレータは連想コンテナ ルックアップをどのように変更しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。