2012-04-13 2 views

risposta

6

vector<T>::resize(0) non dovrebbe causare una riallocazione o cancellazione della memoria allocata, e per questo motivo nella maggior parte dei casi è preferibile a vector<T>::clear().

Per ulteriori dettagli consultare le risposte a questa domanda: std::vector resize downward

+4

'clear' non provoca una ridistribuzione o, in modo non vedo il motivo per cui sarebbe preferibile ... – ildjarn

+0

ho visto almeno un'implementazione dove 'clear' ha liberato la memoria. –

+0

@ MarkB: Non dovrebbe avere. : P – GManNickG

2

Facendo un vector::resize(0) o per un conteggio più piccolo piuttosto che di conteggio attuale non dovrebbe rilasciare alcuna memoria. Tuttavia, potrebbe distruggere questi elementi.

Per un riferimento sui std::vector::resize, dare un'occhiata a std::vector::resize