Gibt es eine "zweiseitige" std::map?
-
Ich suche einen Container, der mir folgendes ermöglicht:
Ich habe ein Objekt dieses Typs, nennen wir es foo.
So wie bei einer Map weise ich z. B. so etwas zu:
foo["test"] = "hallo";So weit ich das verstanden habe, kann ich in der std::map per find() nur nach dem Index suchen ("test"), nicht aber nach dem Wert ("hallo"). Gibt es einen Container, der ein zweiseitiges Suchen zulässt, also dass ich bei der Suche nach dem Wert "hallo" den Index "test" bekomme und bei Suche nach dem Index "test" den Wert "hallo"? Klar könnte ich über die Map loopen und schauen ob der aktuelle Index den gesuchten Wert enthält, aber vielleicht geht es ja einfacher/performanter.
Dass jede Kombination aus Index/Wert in solch einem gesuchten Container nur einmal vorkommen darf, ist mir bewusst!
-
Boost.Bimap ist die Antwort.
-
Bzw. wenn es noch generischer sein soll, dann Boost.Multiindex.
http://www.boost.org/doc/libs/1_42_0/libs/multi_index/doc/index.html