Ich bin sehr verwirrt durch den Namen 'unordered_map'. Der Name deutet darauf hin, dass die Schlüssel überhaupt nicht bestellt sind. Aber ich dachte immer, dass sie nach ihrem Hash-Wert geordnet sind. Oder ist das falsch (weil der Name bedeutet, dass sie nicht bestellt sind)?Ist die unordered_map wirklich ungeordnet?
Oder anders ausgedrückt: Ist die
typedef map<K, V, HashComp<K> > HashMap;
mit
template<typename T>
struct HashComp {
bool operator<(const T& v1, const T& v2) const {
return hash<T>()(v1) < hash<T>()(v2);
}
};
die gleichen wie
typedef unordered_map<K, V> HashMap;
? (OK, nicht genau, wird STL hier beschweren, denn es kann Schlüssel k1, k2 und weder k1 < k2 noch k2 < k1 sind Sie müßten multimap
verwenden und die gleiche Prüfung überschreiben..)
Oder auch anders: Kann ich bei der Iteration davon ausgehen, dass die Schlüsselliste nach ihrem Hashwert sortiert ist?
Mögliches Duplikat http bedeutet: //stackoverflow.com/questions/3039823/boostunordered-map-is-ordered – Cogwheel