我正在寻找一个C++数据结构的实现(或数据结构的组合),满足以下标准:
- 项目的访问方式与std::vector相同
- 提供随机访问迭代器(以及迭代器比较 <,>)
- 平均项访问(:查找)时间的最坏情况为
O(log(n))
- 按照添加到容器中的顺序进行迭代
- 给定迭代器,我可以在容器中找到指向的项目的序数位置,最坏情况下的复杂度为
O(log(n))
- 提供项目插入和删除在特定位置的最坏
O(log(n))
复杂度 - 删除/插入项目不会使先前获得的迭代器无效
感谢您提前提供任何建议
Dalibor
(编辑)答案:
我选择的答案描述了符合所有这些要求的数据结构。但是,正如Maxim Yegorushkin所建议的那样,boost::multi_index提供了非常接近上述功能的功能。
(编辑) 一些要求没有被正确指定。它们根据更正(:原始)进行修改。
(编辑) 我找到了已接受答案中所描述的数据结构的实现。到目前为止,它按预期工作。它被称为计数器树。
(编辑) 考虑使用sp2danny建议的AVL-Array。
boost::multi_index
)。 - Nim