¿Eliminando el elemento del vector, mientras que en el rango C ++ 11 'for' loop?

Tengo un vector de IInventory *, y estoy recorriendo la lista usando el rango de C ++ 11 para hacer cosas con cada uno.

Después de hacer algunas cosas con una, es posible que desee eliminarla de la lista y eliminar el objeto. Se que puedo llamardelete en el puntero en cualquier momento para limpiarlo, pero ¿cuál es la forma correcta de eliminarlo del vector, mientras está dentro del rango?for ¿lazo? ¿Y si lo elimino de la lista, se invalidará mi bucle?

<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>

Respuestas a la pregunta(10)

Su respuesta a la pregunta