Maison  >  Article  >  développement back-end  >  Comment personnaliser le tri des clés dans C Maps ?

Comment personnaliser le tri des clés dans C Maps ?

DDD
DDDoriginal
2024-11-03 22:14:30901parcourir

How to Customize the Sorting of Keys in C   Maps?

Comparateurs personnalisés pour les cartes

En C , les cartes utilisent une fonction de comparaison pour organiser leurs paires clé-valeur. Par défaut, le comparateur de chaînes intégré à la carte compare les chaînes par ordre alphabétique. Cependant, vous pouvez remplacer ce comparateur pour définir vos propres critères de comparaison.

Utilisation d'un comparateur personnalisé

Pour définir votre propre comparateur de chaînes, créez une structure qui implémente l'opérateur () méthode. La méthode doit prendre deux chaînes comme arguments et renvoyer une valeur booléenne indiquant leur ordre :

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

Ce comparateur compare les chaînes selon leur longueur, par ordre croissant.

Création d'une carte avec un Comparateur personnalisé

Pour créer une carte à l'aide de votre comparateur personnalisé, fournissez-le comme troisième argument du modèle :

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>

Vous pouvez également transmettre le comparateur au constructeur de la carte :

<code class="cpp">std::map<std::string, std::string> myMap(cmpByStringLength());</code>

Autres options de tri

Le remplacement du comparateur vous permet de trier votre carte en fonction de n'importe quel critère personnalisé. Notez que lors d'une comparaison par longueur, une seule chaîne de chaque longueur peut constituer une clé unique dans la carte.

Pour des besoins de tri plus complexes, vous pouvez également explorer l'utilisation de bibliothèques tierces telles que le conteneur multi_index de Boost.

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