Tengo un código que se ve así:
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);
Me gustaría eliminar los elementos inactivos inmediatamente después de actualizarlos, para evitar volver a recorrer la lista. Pero si agrego las líneas comentadas, aparece un error cuando llego a i++
: "El iterador de lista no se puede incrementar". Intenté algunas alternativas que no aumentaron en la declaración for, pero no pude hacer que nada funcionara.
¿Cuál es la mejor manera de eliminar elementos mientras recorres una lista estándar?