Comparateurs transparents en C 14
C 14 a introduit un changement significatif dans les conteneurs associatifs, car les modèles de fonctions membres find, count, lower_bound, upper_bound et égal_range nécessitent désormais un comparateur transparent pour participer à la résolution de surcharge.
Objectif de Comparateurs transparents
Les comparateurs transparents visent à résoudre le problème de la recherche hétérogène dans les conteneurs associatifs. Avant C 14, les conteneurs associatifs ne pouvaient effectuer une recherche qu'avec une clé du type exact de la clé du conteneur. Cependant, dans de nombreux scénarios, il est souhaitable d'autoriser la recherche avec des clés convertibles au type de clé du conteneur.
Exemple de comparateur transparent
L'exemple suivant illustre un comparateur transparent :
template <> struct less<> { template <class T, class U> auto operator()(T&& t, U&& u) const -> decltype(std::forward<T>(t) < std::forward<U>(u)); typedef *unspecified* is_transparent; };
Ce comparateur peut être utilisé avec des types hétérogènes, car il accepte tous les types d'arguments et transmet simplement à l'opérateur de comparaison.
Impact sur les conteneurs standards
Par défaut, les conteneurs standards n'utilisent pas de comparateurs transparents. Cependant, en utilisant explicitement std::less<> ou un autre comparateur transparent lors de l'instanciation d'un conteneur associatif, la nouvelle fonctionnalité peut être activée.
Solution au problème
Les comparateurs transparents permettent aux conteneurs associatifs d'effectuer une recherche avec des clés qui sont convertibles en type de clé du conteneur. Cela élargit considérablement la flexibilité et l'utilité des conteneurs associatifs, en particulier dans les scénarios où une recherche hétérogène est nécessaire.
Conclusion
L'introduction de comparateurs transparents en C 14 fournit un outil puissant mécanisme de recherche hétérogène dans des conteneurs associatifs. En utilisant des comparateurs transparents, les développeurs peuvent profiter de la flexibilité et de la commodité qu'ils offrent.
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!