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
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?
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
Tags und Links c++ boost data-structures unordered-map bimap