双向关联容器

时间:2016-02-01 10:45:45

标签: c++ qt boost c++-standard-library

我正在寻找一种数据类型(或至少是一个正确的名称)或数据结构的地图,允许在两个方向快速查找。

类似的东西:

class DoubleMap{
    int getA(int b){
      return b2a[b];
    }
    int getB(int a){
      return a2b[a];
    }

    void insert(int a, int b){
      a2b[a] = b;
      b2a[b] = a;
    }
    std::map<int, int> a2b;
    std::map<int, int> b2a;

};

当然是模板化和更复杂的。

是否有它的名称和一些std容器或来自Qt或boost的东西?

1 个答案:

答案 0 :(得分:3)

我建议使用boost::bimap这是专为按键或值进行查找而设计的。

所以在你的情况下你可以这样做:

#include <boost/bimap.hpp>
typedef boost::bimap< int, int > bm_type;
bm_type doubleMap;

然后按键执行查找:

doubleMap.left.find(key)

按值查找:

doubleMap.right.find(val)