为快速查找优化的有序关联数据结构?

时间:2013-01-17 22:19:36

标签: c++ stl

我正在寻找针对快速查询优化的std::map - esque数据结构。

一种方法是使用排序的std::vector作为底层存储来实现map的接口 - 由于随机访问迭代器和缓存局部性,这将提供快速binary_search

然而,这听起来像是重新发明轮子。当然这样的事情已经存在了吗?

是否存在使用std :: vector进行存储的开源有序关联数据结构?

修改

回应建议只使用std :: map 的评论 - 请在此处阅读:http://lafstern.org/matt/col1.pdf

2 个答案:

答案 0 :(得分:3)

Boost.Containers库有一个有序的映射容器,其存储由名为boost::flat_map的连续数组支持。但请注意,渐近的,理论上的复杂性与标准map(对数)相同,并且更好的选择取决于用例的许多细节:插入与查找,迭代,迭代器失效要求。

由于接口非常相似,因此应该可以通过typedef逐个替换它们并分析相对性能,这是你绝对必须做的事情。

答案 1 :(得分:0)

  

是否存在使用的开源有序关联数据结构   一个用于存储的std :: vector?

如何维护排序vector ?这样查找可以很快(二进制搜索,没有指针遍历)。

相关问题