Удаление элемента из вектора, в то время как в C ++ 11 диапазон «для» цикла?
У меня есть вектор IInventory *, и я перебираю список, используя диапазон C ++ 11 для того, чтобы что-то делать с каждым.
После того, как вы поработаете с ним, я могу удалить его из списка и удалить объект. Я знаю, что могу позвонитьdelete
на указатель в любое время, чтобы очистить его, но как правильно удалить его из вектора, находясь в диапазонеfor
цикл? И если я удалю его из списка, мой цикл станет недействительным?
<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>