Maison > développement back-end > C++ > le corps du texte

Comment puis-je personnaliser le comparateur d'une carte en C pour trier les clés selon leur longueur ?

Susan Sarandon
Libérer: 2024-11-04 08:02:02
original
494 Les gens l'ont consulté

How can I customize the comparator for a map in C   to sort keys by their length?

Personnalisation des comparateurs pour les cartes

En C , std::map utilise un comparateur pour ordonner ses éléments. Par défaut, les cartes utilisent l'opérateur inférieur à (<) pour comparer les clés. Cependant, il est possible de remplacer ce comportement par défaut en fournissant un comparateur personnalisé.

Cette question explique comment personnaliser le comparateur d'une carte afin de trier les clés par longueur plutôt que par ordre alphabétique. Voici la solution :

Solution utilisant une classe personnalisée

std::map autorise jusqu'à quatre arguments de type modèle, le troisième étant un comparateur. Voici un exemple de classe personnalisée qui implémente un comparateur basé sur la longueur de la chaîne :

<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

Pour utiliser ce comparateur personnalisé, créez une carte avec les arguments de modèle suivants :

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</p>
<p><strong>Solution utilisant l'argument constructeur</strong></p>
<p>Vous pouvez également transmettre un comparateur au constructeur de la carte. Cette syntaxe est équivalente à l'exemple précédent :</p>
<pre class="brush:php;toolbar:false"><code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap(cmpByStringLength());</code>
Copier après la connexion

Remarque : Lors d'une comparaison par longueur, une seule chaîne de chaque longueur peut être présente dans la carte en tant que clé.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!