boost :: bimap para enum
Eu estou tentando criar um recurso de pesquisa bidirecional simples para enums em C ++. Eu tenho uma consulta de mão única funcionando bem ...
enum MyEnum
{
One,
Two,
Three
};
const boost::unordered_map<MyEnum,std::string> MyEnumMap = map_list_of
(One, "One")
(Two, "Two")
(Three, "Three");
e, em seguida, fazendo uma olhada via
MyEnumMap.at(One)
Isso funciona, mas só permite pesquisas com base na chave. Gostaria de usar um contêiner de pesquisa bidirecional como boost: bimap para permitir pesquisas reversas fáceis com base no valor e na chave. Não parece que map_list_of seja compatível com boost :: bimap.
Em primeiro lugar, devo ainda estar usando map_list_of com boost :: bimap, ou é outro tipo necessário?
Os mapas serão todos do tipo básico (Enum, string).
Em segundo lugar, existe uma maneira que eu ainda possa definir o mapa como const de uma maneira simples como acima? Eu estou tentando fazer isso tão fácil de atualizar e manter quanto possível sem entrar em muitos typedefs adicionais e tal. Sua percepção é apreciada.