【问题标题】:C++ triplet lookup containerC++ 三元组查找容器
【发布时间】:2013-01-24 22:39:24
【问题描述】:

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

【问题讨论】:

标签: c++ boost stl


【解决方案1】:

boost multi_index 可能是您正在寻找的。​​p>

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

【讨论】:

    【解决方案2】:

    您可以使用内部数据库。将所有这些数据放入一个表中并进行查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      相关资源
      最近更新 更多