C'est tout à fait exact. Mais si tu utilises
resize, par exemple pour agrandir, tu vas créer de nouveaux éléments,
size() n'aura plus la même valeur et
emplace_back tout comme
push_back auront toujours pour effet d'ajouter encore un nouvel élément, au risque de provoquer une invalidation des références.
Si on fait un
reserve(2) au début du code montré
avant l'ajout du premier élément, il n'y aura pas de problème car on sait que l'ajout du deuxième ne nécessitera pas de redimensionnement. La mémoire du vector n'est redimensionnée que lorsque la mémoire additionnelle est consommée. Si on se réserve assez de mémoire additionnelle, on est tranquille
.
Partager