iterador de borrado de vectores

Tengo este codigo:

int main()
{
    vector<int> res;
    res.push_back(1);
    vector<int>::iterator it = res.begin();
    for( ; it != res.end(); it++)
    {
        it = res.erase(it);
        //if(it == res.end())
        //  return 0;
    }
}

"Un iterador de acceso aleatorio que apunta a la nueva ubicación del elemento que siguió al último elemento borrado por la llamada a la función, que es el final del vector si la operación borró el último elemento de la secuencia".

Este código falla pero si uso el if (it == res.end ()) y luego regresa funciona. ¿Cómo? ¿El bucle for cambia el res.end () para que falle el operador no igual?

Respuestas a la pregunta(9)

Su respuesta a la pregunta