Maison > développement back-end > C++ > Comment les comparateurs transparents permettent-ils une recherche hétérogène dans des conteneurs associatifs C ?

Comment les comparateurs transparents permettent-ils une recherche hétérogène dans des conteneurs associatifs C ?

DDD
Libérer: 2024-12-23 02:55:13
original
110 Les gens l'ont consulté

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

Comparateurs transparents pour les conteneurs associatifs C

Comprendre le concept des comparateurs transparents

En C 14, les conteneurs associatifs ont introduit un nouveau concept connu sous le nom de « comparateurs transparents ». Selon la norme, les modèles de fonctions membres find, count, lower_bound, upper_bound et equal_range ne participent à la résolution de surcharge que si le type Compare::is_transparent existe.

Un comparateur transparent est un type qui définit un is_transparent imbriqué. taper. Ce type signale au conteneur associatif qu'il doit considérer le comparateur comme transparent pour une recherche hétérogène. En conséquence, le conteneur peut désormais effectuer des comparaisons entre le type de clé du conteneur et différents types comparables au type de clé.

Avantages des comparateurs transparents

Comparateurs transparents résoudre le problème de la recherche hétérogène dans les conteneurs associatifs. Traditionnellement, les conteneurs ne pouvaient être recherchés qu'avec des clés du même type que le type de clé du conteneur. Avec les comparateurs transparents, les conteneurs peuvent être recherchés avec des valeurs comparables au type de clé mais pas nécessairement du même type.

Implémentation de comparateurs transparents

C 14 fournit un modèle de bibliothèque appelé less, qui peut être utilisé pour définir un comparateur transparent. Le modèle less a une implémentation par défaut qui spécialise void et permet de comparer tous les types. En spécifiant std::less, où Cmp est un comparateur transparent, les conteneurs associatifs peuvent permettre une recherche hétérogène.

Impact sur les conteneurs standards

L'introduction des comparateurs transparents modifie le comportement des conteneurs associatifs uniquement si un comparateur transparent est utilisé. Par défaut, les conteneurs conservent leur comportement d'origine. Lors de l'utilisation d'un comparateur transparent, tel que std::less, le conteneur acquiert la possibilité d'effectuer une recherche hétérogène.

Dans l'exemple fourni, std::set aurait un comparateur transparent, permettant une recherche hétérogène, tandis que std::set> ne le ferais pas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal