我最近看到boost有一个名为bimap的双向地图实现。
我的初始STL地图使用以下两种类型:
int
作为密钥类型std::weak_ptr<void>
作为值类型(让我们称之为X
)要创建具有这些类型的bimap,声明将类似于
boost::bimap<int, boost::bimaps::set_of<X, std::owner_less<X>>>
因为std::weak_ptr
需要较少的运算符(由std::owner_less
提供)并且与boost::bimaps::set_of
的类型相关联(如果我理解正确的话)。
我希望地图中的int
类型键指向多个X
类型的值。
对于标准地图,将值类型从X
更改为std::list<X>
即可,如下所示:
std::map<int, std::list<X>>
如何定义双向地图(或可以使用什么),以便将正确的地图视图解释为map<X,int>
(展平X
的列表),而正确的地图仍然是一个map<int,list<X>>
?