std::list, std::vector et allocation mémoire
Bonjour,
Une question que je me pose sur l'allocation de mémoire dans les listes et les vecteurs :
Est-il possible de stocker dans un pointeur l'adresse d'un objet inséré dans une liste ou dans un vecteur et d'être sûr que ce pointeur pointe toujours sur l'objet ?
En gros, faire :
Code:
1 2 3 4 5
| std::list conteneur; ou std::vector conteneur;
cObject objet;
cObject *pObjet = &objet;
conteneur.push_back(objet); |
Pour les listes, il s'agit de listes chainées, donc à priori, pas de soucis...
Mais pour les vecteurs, que se passe-t-il en cas de réallocation (pour cause de dépassement, par exemple) ?
Est-ce qu'au moment de la réallocation, l'objet lui-même est déplacé ?
Ou est-ce que seulement la zone réservée pour les itérateurs est réallouée et seulement les itérateurs sont déplacés ?
Merci !