排序数据结构通过迭代器快速迭代,插入,删除

时间:2014-09-04 12:25:14

标签: c++ data-structures

我正在寻找具有以下属性的数据结构:

  • 排序(除非排序顺序迭代不需要这样)
  • 按排序顺序进行O(1)迭代。
  • 快速插入。我认为O(lg(n))是要走的路。
  • 快速删除using an iterator。我希望至少与插入速度相同。我永远不会按值删除项目,并且始终可以使用迭代器。这个要求意味着插入和迭代永远不会使迭代器失效,除非按迭代器的删除速度以与删除相同的速度发生。

其他任何内容都不相关,永远不会被使用。

在搜索了一段时间之后,我无法找到遵循这些属性的数据结构。堆允许快速插入和删除(虽然不是迭代器本身),但不容易以所需的方式迭代。

我还看了一个有序的矢量。这有快速插入和正确的迭代,但删除非常困难。

我会说这是一个非常常见的数据结构,即使我找不到匹配的结构。此外,我认为删除时总是有一个迭代器这一事实可能会提高性能。

我希望你能帮助我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:4)

指定

std::setstd::multiset具有insert()的对数复杂度,并通过现有迭代器指定用于删除的常量复杂度。

迭代set / multiset将按排序顺序迭代。