14
i jak mogę to zrobić w C++?Czy mogę zdefiniować mapę, której kluczem jest struktura?
i jak mogę to zrobić w C++?Czy mogę zdefiniować mapę, której kluczem jest struktura?
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
).
"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. –