У меня есть вектор IInventory *, и я перебираю список, используя диапазон С++ 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'...
}