2013-05-13 19 views
13

Il article at cppreference.com indica che la complessità di std::vector::shrink_to_fit è costante. Per quanto ne so che è possibile solo se gli elementi non vengono spostati, perché se lo sono allora la complessità è n. Dice anche che Tutti gli iteratori, incluso il precedente iteratore finale, sono potenzialmente invalidati. il che significa che lo spostamento di elementi è una possibilità ben definita.C++ 11: std :: vector :: shrink_to_fit complex

L'articolo è difettoso? ... o c'è qualche magia che non conosco?

+1

(L'articolo è stato fissato rapidamente Quindi la dichiarazione iniziale è falsa ora..) – Notinlist

risposta

16

L'articolo è difettoso, l'ho risolto.

Mentre lo standard ufficiale non dice nulla circa la complessità della std::vector::shrink_to_fit, in N3376 hanno cambiato la dicitura, fissando in tal modo DR 2033:

23.3.6.3:

void shrink_to_fit();

Richiede: T deve essere MoveInsertable in *this.

Complessità: lineare nella dimensione della sequenza.

+0

Potreste essere citando una bozza - non c'è nulla nello standard C++ 11 su 'std :: vector :: shrink_to_fit() 'complessità. –

+0

@ MichaelBurr: sì, lo hanno cambiato in N3376. – Fanael

+0

Vedo - interessante che non hanno aggiunto la dicitura per 'basic_string <> :: shrink_to_fit()' (ancora?). –

Problemi correlati