gpt4 book ai didi

c++ - 用于枚举的 boost::bimap

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:35 24 4
gpt4 key购买 nike

我正在尝试为 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 一起使用,还是需要另一种类型?
这些映射都是基本的(枚举、字符串)类型。

其次,有没有办法仍然可以像上面那样以简单的方式将映射定义为常量?我正在努力使它尽可能易于更新和维护,而不会涉及太多额外的 typedef 等。感谢您的见解。

最佳答案

尝试直接使用 list_of:

typedef boost::bimap< MyEnum, std::string > bm_type;
const bm_type MyEnumMap =
boost::assign::list_of< bm_type::relation >
( One, "One" )
( Two, "Two" )
( Three, "Three" );

请注意使用“关系”而不是“值类型”。

关于c++ - 用于枚举的 boost::bimap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com