Removendo item do vetor, enquanto no C ++ 11 range 'for' loop?

Eu tenho um vetor de IInventory *, e estou fazendo um loop através da lista usando o C ++ 11 para fazer coisas com cada um.

Depois de fazer algumas coisas com um, talvez queira removê-lo da lista e excluir o objeto. Eu sei que posso ligardelete no ponteiro a qualquer momento para limpá-lo, mas qual é a maneira correta de removê-lo do vetor, enquanto estiver no intervalofor loop? E se eu removê-lo da lista, meu loop será invalidado?

<code>std::vector<IInventory*> inv;
inv.push_back(new Foo());
inv.push_back(new Bar());

for (IInventory* index : inv)
{
    // Do some stuff
    // OK, I decided I need to remove this object from 'inv'...
}
</code>

questionAnswers(10)

yourAnswerToTheQuestion