Eu tenho um código que se parece com isso:
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);
Gostaria de remover itens inativos imediatamente após atualizá-los, para evitar andar na lista novamente. Mas se eu adicionar as linhas comentadas, recebo um erro quando chego a i++
: "Listador de iterador não incremental". Tentei algumas alternativas que não foram incrementadas na instrução for, mas não consegui fazer nada funcionar.
Qual é a melhor maneira de remover itens enquanto você caminha por uma lista std ::?