2010-10-14 2 views

risposta

19

È possibile utilizzare qualsiasi tipo di chiave di mappa, purché implementi uno operator< (oltre ai consueti requisiti di copia e assegnazione per i valori memorizzati nei contenitori).

Per esempio:

struct example { int x; } 

bool operator < (const example &l, const example &r) { return l.x < r.x; } 

std::map<example, int> values; 

In alternativa, si può prevedere una funzione di confronto come il terzo argomento del modello carta invece di definire operator<. Maggiori dettagli here (parametro Compare).

+2

"finché implementa un operatore <" - oppure esiste una specializzazione di 'std :: less' per il tipo. 'map' usa' less' di default, e 'less' usa' operator <'di default, quindi ci sono due percorsi in. –