我正在尝试为 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 不兼容。
首先,我应该仍然使用带有 boost::bimap 的 map_list_of,还是需要其他类型?
这些地图都将是一个基本的(枚举,字符串)类型。
其次,有没有办法我仍然可以像上面那样简单地将地图定义为 const ?我正在尝试使其尽可能易于更新和维护,而不会涉及太多额外的 typedef 等。感谢您的洞察力。