boost :: bimap для enum
Я пытаюсь создать простое средство двунаправленного поиска для перечислений в C ++. У меня односторонний поиск работает нормально ...
enum MyEnum
{
One,
Two,
Three
};
const boost::unordered_map<MyEnum,std::string> MyEnumMap = map_list_of
(One, "One")
(Two, "Two")
(Three, "Three");
а затем просматривая
MyEnumMap.at(One)
Это работает, но это позволяет только поиск на основе ключа. Я хотел бы использовать контейнер двунаправленного поиска, такой как boost: bimap, чтобы обеспечить легкий обратный поиск, основанный как на значении, так и на ключе. Похоже, что map_list_of не совместим с boost :: bimap.
Во-первых, я все еще должен использовать map_list_of с boost :: bimap, или требуется другой тип?
Все карты будут базового типа (Enum, string).
Во-вторых, есть ли способ, которым я все еще могу определить карту как const простым способом, как указано выше? Я пытаюсь сделать это как можно более простым для обновления и поддержки, не вдаваясь в слишком много дополнительных typedef и тому подобного. Ваше понимание ценится.