C ++三元组查找容器

时间:2013-01-24 22:39:25

标签: c++ boost stl

我想为枚举创建一个查找容器,每个条目有三个字段,分别是: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库。

2 个答案:

答案 0 :(得分:2)

提升multi_index可能就是你想要的。

如果你想自己做,你可能会使用三张地图, 1 map<Enum, TUPLE_TYPE*>和2 map<String, TUPLE_TYPE*>封装在它自己的类中,以便您可以实现理智的破坏。

答案 1 :(得分:0)

您可以使用内部数据库。将所有数据放入表中并查询。