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