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

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