J'essaie actuellement de supprimer 2 éléments d'un vecteur si certaines conditions sont remplies. Je peux supprimer avec succès un seul élément sans l'erreur "vector itérateur non déréférencable", je sais que le problème a été causé en enlevant deux éléments à la fois qui dérange avec les itérateurs mais je ne suis pas sûr de la façon correcte d'enlever plus d'un élément à la fois.Iterator vectoriel efface deux éléments à condition
vector<SomeObj*> objs;
vector<SomeObj*>::iterator it = objs.begin();
while (it != objs.end())
{
vector<SomeObj*>::iterator it2 = objs.begin();
bool deleted = 0;
while (it2 != objs.end())
{
if ((*it)->somecondition(**it2))
{
delete *it2;
*it2 = NULL;
it = objs.erase(it2);
delete *it;
*it = NULL;
it = objs.erase(it); //Will error here due to invalidating the iterator
deleted = 1;
break;
}
++it2;
}
if (!deleted)
++it;
}
Quelle est la situation actuelle? – developerbmw
si les deux éléments sont de la même taille – user3424480