Usuwanie elementu z wektora, podczas gdy w C ++ 11 zakres pętli „for”?

Mam wektor IInventory * i przechodzę przez listę za pomocą zakresu C ++ 11, aby robić rzeczy z każdym z nich.

Po zrobieniu kilku rzeczy z jednym, może chcę go usunąć z listy i usunąć obiekt. Wiem, że mogę zadzwonićdelete na wskaźniku w dowolnym momencie, aby go oczyścić, ale jaki jest właściwy sposób usunięcia go z wektora, gdy znajduje się w zasięgufor pętla? A jeśli usunę go z listy, moja pętla zostanie unieważniona?

<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