关于运行时间的问题

时间:2010-12-08 04:40:09

标签: c++ big-o

big-O notation的运行时间是什么:

vector.push_back(item)

vec.erase(itr)  // itr points in the middle of a vector

3 个答案:

答案 0 :(得分:1)

push_back()

的情况下,

O(1)(摊销时间,可能会重新分配) erase()的情况下

O(n),即删除的元素数量(析构函数)加上最后一个元素删除(移动)后的元素数量。

答案 1 :(得分:0)

对于“vector.push_back(item)”,它只有O(1)。 并且“vec.erase(itr)”O(n)因为后面的元素向下移动。

编辑:如果它指向向量的中间,它就像O(n / 2)。

答案 2 :(得分:0)

来自http://www.sgi.com/tech/stl/Vector.html

  

向量是一个序列,它支持对元素的随机访问,在末尾插入和删除元素的恒定时间,以及在开头或中间插入和删除元素的线性时间。