类 C++ STL 的双向 Multimap

Posted

技术标签:

【中文标题】类 C++ STL 的双向 Multimap【英文标题】:C++ STL-like Bidirectional Multimap 【发布时间】:2012-11-21 08:13:12 【问题描述】:

在开源项目中搜索(无提升),我发现了一个类似 STL 的容器bimaphere,其中实现了双向映射。在标准 C++ 库中还有multimap

但我想知道,有没有努力实现“类似 STL 双向多图”? 或者,我们如何组合现有的容器来生成数据 结构?

注意:一个简单的解决方案是双向使用两个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的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL list迭代器

C++ STL map迭代器

C++ STL list详解

C++ 常用 stl容器(vector向量,stack栈,queue队列,deque双向队列,map,set)

近万字带你了解“c++“STL中的各种容器

c++中的细化和继承