Ersetzen Sie die Vektor- und Hash-Tabelle durch Boost.Bimap

8

Ich möchte eine vector<string> - und eine boost::unordered_map<string, size_t> - Zuordnungszeichenfolge in Indizes mit einer boost::bimap ersetzen.

Welche Instanz von bimap soll ich verwenden? Bisher habe ich mich mit

beschäftigt %Vor%

aber ich bin mir nicht sicher, ob ich jetzt die Sammlungstypen umgekehrt habe. Außerdem frage ich mich, ob ich die Sammlung von Beziehungen ändern sollte Geben Sie ein. Wäre ein vector_of_relation meine beste Wahl oder ein set_of_relation , oder geh einfach mit dem Standard?

    
Fred Foo 16.11.2010, 13:12
quelle

1 Antwort

4

Um einen Bimap zwischen size_t und std :: string zu erhalten, wo Sie ~ constant haben (bis zu den Kosten für Hashing und mögliche Konflikte), müssen Sie unsordered_set_of:

verwenden %Vor%

gibt zurück:

%Vor%

Das ungeordnete_set ist eine Boost-Version von set, die Hash-Tabellen anstelle von Bäumen zum Speichern der Elemente verwendet, siehe Boosting Unordered docs .

Betrachten Sie die Kommentare aus einem der Bimap-Beispiele unter Bimap Beispiel , wir haben:

  

Die linke Kartenansicht funktioniert wie eine std :: unordered_map & lt; std :: string, lang & gt ;,   gegeben den Namen des Landes können wir es verwenden, um die Bevölkerung in konstanter Zeit zu suchen

    
MGwynne 03.06.2011, 21:21
quelle