Maison > développement back-end > C++ > Comment personnaliser les comparaisons clés dans les cartes STL ?

Comment personnaliser les comparaisons clés dans les cartes STL ?

DDD
Libérer: 2024-11-03 13:37:02
original
973 Les gens l'ont consulté

How Can You Customize Key Comparisons in STL Maps?

Personnalisation des comparateurs pour la comparaison des clés de carte

Lorsque vous travaillez avec des cartes, le choix du comparateur de clés peut avoir un impact significatif sur le comportement de la collection. Dans les cartes STL, le comparateur par défaut compare les clés en fonction de leur ordre naturel. Cependant, il est possible de remplacer cette valeur par défaut et de spécifier un comparateur personnalisé pour les comparaisons clés.

Création de comparateurs personnalisés

Pour définir un comparateur personnalisé, créez une classe ou une structure qui implémente la fonction Operator(). Cette fonction prend deux arguments représentant les clés à comparer et renvoie une valeur booléenne indiquant le résultat de la comparaison. Par exemple, pour comparer les clés en fonction de la longueur de leur chaîne, vous pouvez créer le comparateur suivant :

<code class="cpp">struct cmpByStringLength {
    bool operator()(const std::string& a, const std::string& b) const {
        return a.length() < b.length();
    }
};
Copier après la connexion

Utiliser des comparateurs personnalisés dans Maps

Une fois que vous disposez d'un comparateur personnalisé , vous pouvez l'utiliser pour initialiser une carte en la passant comme troisième argument du modèle :

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>
Copier après la connexion

Alternativement, vous pouvez également transmettre le comparateur au constructeur de la carte :

<code class="cpp">std::map<std::string, std::string> myMap(std::less<std::string>(), cmpByStringLength());</code>
Copier après la connexion

Autres options de tri

Bien que l'utilisation de comparateurs personnalisés offre une flexibilité, il convient de noter que l'utilisation d'un comparateur personnalisé basé sur la longueur peut limiter votre capacité à avoir plusieurs clés de même longueur. Si vous avez besoin de mécanismes de tri plus complexes, envisagez d'utiliser une structure de données alternative telle que Boost.MultiIndex ou une bibliothèque de tri externe.

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