2010-12-08 7 views
1

Quelle est la durée de fonctionnement en big-O notation de:Questions sur l'exécution de temps

vector.push_back(item) 

et

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

Quelles idées avez-vous à ce sujet? Ce site n'existe pas pour faire vos devoirs pour vous. – Zeke

+0

Voir: http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it – fncomp

+0

Eh bien, je veux savoir ce qui est plus efficace et pourquoi, et si le vecteur devient plus grand et plus petit si cela affecte –

Répondre

1

O (1) (temps amorti, la réaffectation peut se produire) en cas de push_back()

O (n) dans le cas de erase() ie Linéaire sur le n ombre d'éléments effacés (destructeurs) plus le nombre d'éléments après le dernier élément supprimé (en mouvement).

+0

donc amorti signifie que la réallocation peut se produire? –

+1

@Jon Smith: Non! Lisez ceci: http://en.wikipedia.org/wiki/Analysis amorti –

+0

très utile merci –

0

Pour "vector.push_back (item)" son seul O (1). Et "vec.erase (itr)" O (n) car les éléments suivants sont décalés vers le bas. Editer: Si elle pointe au milieu dans le vecteur, c'est comme O (n/2).

+0

alors O (n/2) est identique à O (n) droite? –

+0

@Jon: Oui [....] –

0

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

Un vecteur est une séquence qui permet l'accès aléatoire à des éléments, l'insertion de la constante de temps et l'enlèvement des éléments à la fin, et l'insertion de temps linéaire et l'enlèvement des éléments au début ou à la milieu.