46 votes

Est-ce que vector::erase() sur un vecteur de pointeurs d'objet détruit l'objet lui-même ?

J'ai un vecteur de pointeurs vers des objets. Je dois supprimer un élément du vecteur et placer cet élément dans une autre liste.

J'ai lu que l'effacement peut être utilisé pour supprimer l'objet du vecteur, mais j'ai également lu qu'il appelle le destructeur d'objets avant de le faire.

J'ai besoin de savoir si l'effacement de l'objet le détruira également.

2voto

Billy ONeal Points 50631

Oui, erase détruit l'élément. Cependant, si vous placez l'élément dans un autre conteneur, vous avez probablement fait une copie en le plaçant dans cet autre conteneur. La seule façon de rencontrer des problèmes est de copier un pointeur ou quelque chose du genre dans l'autre conteneur.

1voto

Puppy Points 90818

Oui, bien sûr. Si l'objet n'existe pas dans le vecteur, où existerait-il d'autre ?

Modifier : Cela ne supprimera rien sur lequel pointe un pointeur. Vous devez utiliser des pointeurs de gestion automatique de la durée de vie tels que shared_ptr pour gérer la durée de vie des objets.

1voto

Dominic Gurto Points 704

Oui. vector::erase détruit l'objet supprimé, ce qui implique d'appeler son destructeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X