Element aus Vektor entfernen, während sich in C ++ 11 eine 'for'-Schleife befindet?

Ich habe einen Vektor von IInventory *, und ich durchlaufe die Liste mit C ++ 11-Bereich für, um Sachen mit jedem zu tun.

Nachdem ich einige Dinge mit einem gemacht habe, möchte ich es vielleicht aus der Liste entfernen und das Objekt löschen. Ich weiß, dass ich anrufen kanndelete Sie können jederzeit auf den Zeiger klicken, um ihn zu bereinigen. Was ist jedoch der richtige Weg, um ihn aus dem Vektor zu entfernen, während er sich im Bereich befindet?for Schleife? Und wenn ich es von der Liste entferne, wird meine Schleife ungültig?

<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>

Antworten auf die Frage(10)

Ihre Antwort auf die Frage