Вопросы о времени выполнения - PullRequest
1 голос
/ 08 декабря 2010

Что такое время выполнения в big-O нотации из:

vector.push_back(item)

и

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

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

O (1) (амортизированное время, может произойти перераспределение) в случае push_back()

O (n) в случае erase() т.е. Линейный по количеству удаленных элементов (деструкторов) плюс количество элементов после последнего удаленного элемента (перемещение).

0 голосов
/ 08 декабря 2010

С http://www.sgi.com/tech/stl/Vector.html:

Вектор - это последовательность, которая поддерживает произвольный доступ к элементам, постоянное время вставки и удаления элементов в конце, а также линейное время вставки и удаления элементов в началеили в середине.

0 голосов
/ 08 декабря 2010

Для "vector.push_back (item)" это только O (1). И "vec.erase (itr)" O (n), потому что более поздние элементы смещены вниз.

Редактировать: если он указывает на середину в векторе, это похоже на O (n / 2).

...