1

我最近看到 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

对于标准映射,将值类型从 更改Xstd::list<X>可以,如下所示: std::map<int, std::list<X>>

如何定义双向地图(或可以使用什么),以便正确的地图视图将被解释为 a map<X,int>(展平 的列表X),而正确的地图仍然是 a map<int,list<X>>

4

0 回答 0