向量起始元素上std :: vector :: erase的时间复杂度

时间:2018-09-28 06:22:10

标签: c++11 vector runtime time-complexity

看了一下vector.erase的工作原理后,我不确定std :: vector :: erase在向量的第一个元素上的运行时复杂度。时间会恒定吗?

1 个答案:

答案 0 :(得分:1)

来自[vector.modifiers](重点是我):

  

迭代器擦除(const_iterator位置);
    迭代器擦除(首先是const_iterator,最后是const_iterator);

     

[...]

     

复杂度:T的析构函数被称为等于擦除的元素数的次数,但 T的赋值运算符被称为与T之后的向量中的元素数相等的次数。删除的元素

因此,当您擦除第一个元素时,会得到一个析构函数调用和size() - 1分配,这是线性时间复杂度。