Maison > développement back-end > C++ > N'importe quelle classe peut-elle servir de clé pour std::map ?

N'importe quelle classe peut-elle servir de clé pour std::map ?

Patricia Arquette
Libérer: 2024-11-26 08:05:11
original
297 Les gens l'ont consulté

Can Any Class Serve as a Key for std::map?

Clés pour std::map : exigences et mise en œuvre

Lors de l'utilisation de std::map pour mapper des objets de différentes classes, la classe que vous l'intention d'utiliser comme clé peut ne pas satisfaire aux exigences nécessaires pour des clés valides. std::map organise son contenu à l'aide d'un mécanisme de classement, ce qui soulève la question de savoir si une classe arbitraire peut servir de clé ou s'il existe des exigences spécifiques.

La clé de std::map doit respecter les éléments suivants exigences :

  • Copiabilité et assignabilité : La classe de clé doit pouvoir être copiée et attribué.

L'ordre de la carte est contrôlé par le troisième argument du modèle ou l'argument du constructeur, qui est par défaut std::less. Par défaut, std::less exploite le < opérateur. Cependant, vous avez la possibilité de définir votre propre opérateur de comparaison :

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

Assurez-vous que votre opérateur de comparaison définit un ordre strict. Si CmpMyType()( a, b ) renvoie true, CmpMyType()( b, a ) doit renvoyer false. Lorsque les deux renvoient faux, les éléments sont considérés comme équivalents et appartiennent à la même classe d'équivalence.

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 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