2010-10-14 25 views

Respuesta

19

Puede usar cualquier tipo como clave de mapa, siempre que implemente operator< (más los requisitos habituales de copiar y asignar para valores almacenados en contenedores).

Por ejemplo:

struct example { int x; } 

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

std::map<example, int> values; 

Como alternativa, puede proporcionar una función de comparación como el tercer argumento de la plantilla de mapa en lugar de definir operator<. Más detalles here (parámetro Compare).

+2

"siempre que implemente un operador <" - o hay una especialización de 'std :: less' para el tipo. 'map' usa' less' de forma predeterminada, y 'less' utiliza' operator '' de forma predeterminada, por lo que hay dos rutas en. –

Cuestiones relacionadas