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!