boost :: bimap dla enum
Próbuję utworzyć prostą dwukierunkową funkcję wyszukiwania enums w C ++. Mam jednokierunkowe wyszukiwanie działające dobrze ...
enum MyEnum
{
One,
Two,
Three
};
const boost::unordered_map<MyEnum,std::string> MyEnumMap = map_list_of
(One, "One")
(Two, "Two")
(Three, "Three");
a potem przejrzyj
MyEnumMap.at(One)
To działa, ale pozwala tylko na wyszukiwania oparte na kluczu. Chciałbym użyć dwukierunkowego kontenera wyszukiwania, takiego jak boost: bimap, aby umożliwić łatwe wyszukiwanie wstecz w oparciu o wartość, a także klucz. Wygląda na to, że map_list_of nie jest kompatybilny z boost :: bimap.
Po pierwsze, czy nadal powinienem używać map_list_of z boost :: bimap, czy też wymagany jest inny typ?
Wszystkie mapy będą typem podstawowym (Enum, string).
Po drugie, czy istnieje sposób, w jaki mogę zdefiniować mapę jako stałą w prosty sposób, jak wyżej? Próbuję uczynić to tak łatwym do aktualizacji i utrzymania, jak to możliwe, bez wchodzenia w zbyt wiele dodatkowych typedefów i tym podobnych. Twoja wnikliwość jest doceniana.