类 C++ STL 的双向 Multimap
Posted
技术标签:
【中文标题】类 C++ STL 的双向 Multimap【英文标题】:C++ STL-like Bidirectional Multimap 【发布时间】:2012-11-21 08:13:12 【问题描述】:在开源项目中搜索(无提升),我发现了一个类似 STL 的容器bimap
here,其中实现了双向映射。在标准 C++ 库中还有multimap
。
注意:一个简单的解决方案是双向使用两个multimap
。但它的性能并不好。因为,对于每个insert
/remove
/find
操作,我们应该执行两次。此外,它分配了更多的内存。
注意二:boost.bimap
是 HostileFork 和 KerrekSB 的一个很好的建议,如果没有办法我会使用它。但在此之前,我需要找到一个非 Boost 且小型的类库。
【问题讨论】:
'boost::bimap' 是仅标头模板代码,因此在大小方面,您只需为使用的内容付费。正如 HostileFork 指出的那样,它也非常接近标准库方法。我怀疑你会找到一个更小的类库..... 非提升是因为?如果我创建了一个复制粘贴所有 boost 的项目,那会满足吗?如果只是复制粘贴定义你的类的头文件怎么样? 问题是我有一些限制,我更喜欢添加满足我问题的库。如您所知,boost 还有许多我真的不需要的其他功能。 【参考方案1】:Boost.bimap 允许您自定义两个值的集合类型;两者都可以是非唯一的。
【讨论】:
【参考方案2】:为什么在 boost 中有 bimap 时使用随机的“CodeProject”代码?
http://www.boost.org/doc/libs/1_42_0/libs/bimap/doc/html/index.html
Boost 代码试图接近标准库的可接受方法,并且有一个审查过程,通过这个过程最终会被接受。也许在下一个标准中,谁知道呢?
【讨论】:
以上是关于类 C++ STL 的双向 Multimap的主要内容,如果未能解决你的问题,请参考以下文章