14
et comment puis-je le faire en C++?Puis-je définir une carte dont la clé est une structure?
et comment puis-je le faire en C++?Puis-je définir une carte dont la clé est une structure?
Vous pouvez utiliser n'importe quel type en tant que clé de carte, à condition qu'elle implémente un operator<
(plus les exigences habituelles de copie et d'attribution pour les valeurs stockées dans des conteneurs).
Par exemple:
struct example { int x; }
bool operator < (const example &l, const example &r) { return l.x < r.x; }
std::map<example, int> values;
Vous pouvez également fournir une fonction de comparaison que le troisième argument du modèle de carte au lieu de définir operator<
. Plus de détails here (paramètre Compare
).
"tant qu'il implémente un opérateur <" - ou qu'il y a une spécialisation de 'std :: less' pour le type. 'map' utilise' less' par défaut, et 'less' utilise par défaut' operator <', donc il y a deux routes dans. –