我想为枚举创建一个查找容器,每个条目有三个字段,分别是:1)枚举值2)人类可读字符串3)数据库字符串
以下是我为每个枚举设想的声明:
namespace MyNameSpace
{
enum Enum
{
One,
Two,
Three
};
LOOKUP_MAP_BEGIN
(One, "One", "1")
(Two, "Two", "2")
(Three, "Three", "3")
LOOKUP_MAP_END
}
我当然不是宏的忠实粉丝,但在这种情况下,它可以很好地清理内容并帮助保持地图条目与枚举非常接近,以帮助确保枚举的更改得以延续。
假设所有条目都是唯一的。我希望能够使用三个字段中的任何一个作为键进行查找,并检索其他两个字段中的任何一个。如果它会使事情变得更简单,我可以通过使用字符串字段作为键限制查找来使其工作,只返回相应的枚举值而不是其他字符串。
是否有现成的容器可以完成这样的事情,或者我正在考虑管理几个单独的(某种程度上)链接的地图/向量/列表?我可以访问Boost库。
答案 0 :(得分:2)
提升multi_index可能就是你想要的。
如果你想自己做,你可能会使用三张地图,
1 map<Enum, TUPLE_TYPE*>
和2 map<String, TUPLE_TYPE*>
封装在它自己的类中,以便您可以实现理智的破坏。
答案 1 :(得分:0)
您可以使用内部数据库。将所有数据放入表中并查询。