没有办法在O(1)时间插入STL列表吗?

时间:2019-04-10 05:06:50

标签: c++ list stl

从理论上讲,您应该能够在O(1)时间内将任何位置插入列表中(在选择的索引处)。但是,当使用STL列表时,您需要在迭代器位置插入,并且据我所知,迭代器位置必须增加O(n)次才能将其设置为所需的索引。我对为什么这样会感到mb目结舌,肯定我弄错了,有办法更快地做到这一点吗?

1 个答案:

答案 0 :(得分:5)

  

我肯定弄错了

不,您没有记错。

  

有没有一种更快的方法?

仅当通过捕获上一个插入调用的返回值来缓存要插入的位置时,才能更快地执行此操作。如果除了列表和要插入的索引之外没有其他信息,则O(n)是您唯一的选择,其中n是要插入的索引。