Maison >développement back-end >C++ >Comment les comparateurs transparents permettent-ils une recherche hétérogène dans des conteneurs associatifs C ?
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
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
Dans l'exemple fourni, std::set
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!