boost :: bimap für enum

Ich versuche, eine einfache bidirektionale Suchfunktion für Aufzählungen in C ++ zu erstellen. Ich habe eine einfache Suche, die einwandfrei funktioniert ...

enum MyEnum
{ 
    One, 
    Two, 
    Three 
};

const boost::unordered_map<MyEnum,std::string> MyEnumMap = map_list_of
    (One, "One")
    (Two, "Two")
    (Three, "Three");

und dann einen Blick über

MyEnumMap.at(One)

Das funktioniert, aber es können nur Suchvorgänge basierend auf dem Schlüssel durchgeführt werden. Ich möchte einen bidirektionalen Lookup-Container wie boost: bimap verwenden, um einfache Reverse-Lookups basierend auf Wert und Schlüssel zu ermöglichen. Es scheint jedoch nicht so, als ob map_list_of mit boost :: bimap kompatibel ist.

Erstens sollte ich map_list_of immer noch mit boost :: bimap verwenden, oder ist ein anderer Typ erforderlich?
Die Zuordnungen sind alle vom Typ "Basic" (Enum, String).

Zweitens, gibt es eine Möglichkeit, die Map auf einfache Weise wie oben als const zu definieren? Ich versuche, dies so einfach wie möglich zu aktualisieren und zu warten, ohne auf zu viele zusätzliche Typedefs und ähnliches einzugehen. Ihre Einsicht wird geschätzt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage