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
DDDoriginal
2024-11-03 13:37:02965parcourir

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();
    }
};

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>

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>

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!

Déclaration:
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