Un Programmeur a écrit :
A adapter parce qu'il connait ce avec quoi il veut reinitialiser. Donc:
Code :
- std::vector<Object>(N, valeur).swap (toto);
|
|
Tu te retrouve avec un pic d'allocation mémoire qui cumule l'ancien et le nouveau vector.
Si c'est pas problématique ça va, après si c'est un bon gros vector bien lourd de plusieurs dizaines, centaines de Mo, (genre une image, un buffer audio, ou moultes échantillons divers ou autres trucs), c'est pas forcément glop. (donc le swap avec un truc vide, puis un resize)
Après dans certains cas, chercher a ramener absolument la capacité au nombres d'éléments c'est pas forcément une bonne idée: par exemple dans le cas d'une queue d'éléments a traiter, souvent avec le même nombre d'éléments pour une question de cohérence temporelle et/ou spatiale (les objets en vue dans un moteur 3d: d'une frame à l'autre le nombre d'éléments sera très fréquemment le même).