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>