Disons que j'ai ce code:Comment garder un itérateur déréférenciable lorsque son vecteur est ajouté?
std::vector<Object*> objects;
std::vector<Object*>::iterator iter;
for (iter = objects.begin(); iter != objects.end(); iter++) {
if (condition)
objects.push_back(new Object());
}
Toutefois, lorsque push_back se produit, iter
devient undereferenceable. Sans réinitialiser iter
, comment puis-je le garder dereferenceable? Si je dois le réinitialiser, y a-t-il un moyen facile de le faire pour qu'il revienne là où il était avant?
Comme une note de côté, Theres un bug logique possible dans cette idée que si vous ajoutez 'objets à la fin alors que nous parcourons, il est possible que vous pourriez entrer dans une boucle infinie que de plus en plus d'objets sont ajoutés et itération ne se termine jamais (theres toujours un autre objet à itérer à!) – MerickOWA