vetor apagar iterador

Eu tenho este código:

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

"Um iterador de acesso aleatório apontando para o novo local do elemento que seguiu o último elemento apagado pela chamada de função, que é o final do vetor se a operação apagou o último elemento na sequência."

Este código falha, mas se eu usar o if (it == res.end ()) e depois retornar, ele funcionará. Por quê? O loop for descontará o res.end () para que o operador não igual falhe?

questionAnswers(9)

yourAnswerToTheQuestion