Удаление элемента из вектора, находясь в диапазоне C++11 & #39;for& #39; петля?

У меня есть вектор IInventory *, и я перебираю список, используя диапазон C++11 для, для делать вещи с каждым.

После некоторых действий с одним я могу удалить его из списка и удалить объект. Я знаю, что могу вызвать deleteдля указателя в любое время, чтобы очистить его, но как правильно удалить его из вектора, находясь в цикле диапазона for? И если я удалю его из списка, мой цикл будет признан недействительным?

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'...
}
91
задан Peter Mortensen 6 December 2016 в 18:51
поделиться