对于小集合或地图,通常使用有序向量而不是基于树的set
/ 更快,map
特别是对于5-10个元素.LLVM 在这种精神上有一些类,但没有真正的适配器可以提供std::map
类似的接口备份std::vector
.
任何(免费)实现这个吗?
编辑:感谢所有其他想法,但我真的对基于矢量的集合/地图感兴趣.我确实有一些具体情况,我倾向于创建大量的通常少于10个元素的集合/映射,我确实希望减少内存压力.例如,考虑三角形网格中顶点的邻居边缘,您可以轻松地使用每组3-4个元素的100k组.
我刚刚偶然发现你的问题,希望还不算太晚。
我推荐一个很棒的(开源)库,名为Loki。它有一个基于向量的关联容器实现,它是 std::map 的直接替代品,称为AssocVector。
它为访问元素提供了更好的性能(而为插入/删除提供了最差的性能)。
该库由《Modern C++ Design》一书的作者Andrei Alexandrescu编写。
它还包含其他一些非常漂亮的东西。