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.


Anmelden zum Antworten