2010-10-14 9 views

Odpowiedz

19

Możesz użyć dowolnego typu jako klucza mapy, o ile implementuje on kod operator< (oraz zwykłe wymagania dotyczące kopiowania i przyporządkowywania wartości przechowywanych w kontenerach).

Na przykład:

struct example { int x; } 

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

std::map<example, int> values; 

Alternatywnie, można zapewnić funkcję porównawczą jako trzeci argument szablonu mapy zamiast definiowania operator<. Więcej szczegółów here (parametr Compare).

+2

"o ile implementuje operatora <" - lub istnieje specjalizacja 'std :: less' dla typu. 'map' domyślnie używa' less', a 'less' domyślnie używa' operator <', więc istnieją dwie trasy w. –

Powiązane problemy