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
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... } };
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!