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

Sorted data structure fast iteration, insertion, deletion by iterator

本文关键字:迭代 插入 删除 迭代器 数据结构 排序      更新时间:2023-10-16

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

  • 已排序(除非排序顺序迭代不需要此操作)
  • O(1)迭代
  • 快速插入。我认为O(lg(n))是要走的路
  • 快速删除using an iterator。我希望至少和插入速度一样快。我永远不需要按值删除项,而且迭代器总是可用的。这一要求意味着插入和迭代永远不会使迭代器无效,除非按值删除的速度与按迭代器删除的速度相同

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

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

我还研究了一个排序向量。这有快速的插入和正确的迭代,但删除相当困难。

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

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

std::setstd::multiset被指定为insert()具有对数复杂度,而通过现有迭代器删除具有分摊常数复杂度。

对集合/多集合进行迭代将按排序顺序进行迭代。