Ho un codice simile a questo:
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);
Vorrei rimuovere gli elementi inattivi immediatamente dopo averli aggiornati, in ordine per evitare di ripetere l'elenco. Ma se aggiungo le righe commentate, ricevo un errore quando arrivo a i++
: "Elenco iteratore non incrementabile". Ho provato alcuni sostituti che non sono aumentati nell'istruzione for, ma non sono riuscito a far funzionare nulla.
Qual è il modo migliore per rimuovere elementi mentre stai camminando su una lista std ::?