unordered_map
-
Abend,
2 kleine Frage zu tr1::unordered_map:
Ich habe in meinem Code recht viele Maps dieser Art: map<std::string, Foo*> und map<int, Foo*>. Die Ordnung nach den Schlüsseln brauche ich nicht.
Nun habe ich gelesen, dass tr1::unordered_map schneller ist als std::map. Kann ich meine map<string, Foo*> einfach so ersetzen durch tr1::unordered_map<string, Foo*> und erwarten, dass das Programm schneller wird?2. Frage: unordered_map hat ja die Methode pair<Iterator, Iterator> equal_range(key). Irgendwie raff ich die Funktion nicht. Eine unordered_map kann den Schlüssel doch nur 1 Mal speichern. Da liefert eine Suche nach dem Key doch IMMER nur 1 oder 0 Elemente. Wieso dann eine Range?

-
@1: Ich bin mir nicht 100% sicher, woher die map ihre Hash-Funktion bezieht, aber prinzipiell sollte es funktionieren.
@2: map<> und set<> haben auch eine Methode equal_range, obwohl die Elemente nicht doppelt vorkommen sollen - ich würde mal darauf tippen, daß das nur aus Gründen des vergleichbaren Interface mit den multi-Varianten vorhanden ist.