2010-10-14 15 views

Répondre

19

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

+2

"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. –