Maison > développement back-end > C++ > À quelles exigences clés une classe doit-elle satisfaire pour être utilisée comme clé dans std :: map ?

À quelles exigences clés une classe doit-elle satisfaire pour être utilisée comme clé dans std :: map ?

Patricia Arquette
Libérer: 2024-12-08 04:38:11
original
702 Les gens l'ont consulté

What Key Requirements Must a Class Satisfy to Be Used as a Key in std::map?

Exigences clés pour std::map

Lors de l'utilisation de std::map, une question courante se pose concernant les caractéristiques qu'une classe clé doit posséder pour servir de clé valide.

Les prérequis sont assez simples : la classe de clé doit fournir des capacités de copie et d'affectation. L'ordre réel dans la carte est déterminé par le troisième argument du modèle ou l'argument du constructeur (si spécifié). Cet argument a généralement la valeur par défaut std::less, qui à son tour est par défaut l'opérateur inférieur à (<). Cependant, l'utilisation des valeurs par défaut n'est pas obligatoire.

Pour personnaliser l'ordre des clés, vous pouvez créer un opérateur de comparaison, idéalement en tant qu'objet fonctionnel. Voici un exemple d'un tel opérateur pour un type hypothétique MyType :

struct CmpMyType
{
    bool operator()(MyType const& lhs, MyType const& rhs) const
    {
        // Implementation of the comparison logic...
    }
};
Copier après la connexion

Notez que cet opérateur de comparaison doit définir un ordre strict. Plus précisément, si CmpMyType()(a, b) renvoie true, alors CmpMyType()(b, a) doit renvoyer false. Si les deux expressions sont fausses, les éléments sont considérés comme égaux et appartiennent à la même classe d’équivalence. En respectant ces exigences, vous pouvez étendre les fonctionnalités de votre classe de clé pour servir efficacement de clé valide dans std::map.

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