对于小型集合或地图,通常使用排序向量而不是基于树的向量要快得多set
/map
- 特别是对于 5-10 个元素的情况。 LLVM 有一些类本着这种精神 http://llvm.org/docs/ProgrammersManual.html#ds_sequential,但没有真正的适配器可以提供std::map
就像备份的接口std::vector
.
有任何(免费)实现吗?
Edit:感谢所有替代想法,但我对基于矢量的集合/地图非常感兴趣。我确实有一些特定的情况,我倾向于创建大量的集合/映射,这些集合/映射通常包含少于 10 个元素,并且我确实希望减少内存压力。例如,考虑三角形网格中顶点的相邻边,您很容易就会得到 100k 组,每组 3-4 个元素。
我刚刚偶然发现你的问题,希望还不算太晚。
我推荐一个很棒的(开源)库,名为Loki http://loki-lib.sourceforge.net/。
它有一个基于向量的关联容器实现,它是 std::map 的直接替代品,称为关联向量 https://github.com/snaewe/loki-lib/blob/master/include/loki/AssocVector.h.
它为访问元素提供了更好的性能(而为插入/删除提供了最差的性能)。
该库是由安德烈·亚历山德雷斯库 http://en.wikipedia.org/wiki/Andrei_Alexandrescu作者现代 C++ 设计 http://en.wikipedia.org/wiki/Modern_C%2B%2B_Design.
它还包含其他一些非常漂亮的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)