J'ai un code qui ressemble à ceci:
for (std::list<item*>::iterator i=items.begin();i!=items.end();i++)
{
bool isActive = (*i)->update();
//if (!isActive)
// items.remove(*i);
//else
other_code_involving(*i);
}
items.remove_if(CheckItemNotActive);
Je souhaite supprimer les éléments inactifs immédiatement après leur mise à jour, afin d'éviter de parcourir à nouveau la liste. Mais si j'ajoute les lignes commentées, j'obtiens une erreur lorsque j'arrive à i++
: "L'itérateur de liste n'est pas incrémentable". J'ai essayé des suppléants qui n'ont pas augmenté dans l'instruction for, mais je n'ai rien pu faire.
Quelle est la meilleure façon de supprimer des éléments lorsque vous parcourez une liste std ::?