C++ 双向关联容器

C++ 双向关联容器,c++,qt,boost,c++-standard-library,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; }

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

比如:

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;

};
类双重映射{
int getA(int b){
返回b2a[b];
}
int getB(int a){
返回a2b[a];
}
无效插入(内部a、内部b){
a2b[a]=b;
b2a[b]=a;
}
std::mapa2b;
标准::地图b2a;
};
当然,模板和更复杂的

它和一些std容器或来自Qt或boost的东西有名字吗?

我建议使用一个专门为按键或值查找而设计的

因此,在您的情况下,您可以:

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

doubleMap.right.find(val)

这可能就是你想要的after@EdChum非常感谢。可能会将此作为答案发布。
doubleMap.right.find(val)