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>