Более генерируемый метод:
я есть этот код:
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;
}
}
«Итератор произвольного доступа, указывающий на новое местоположение элемента, который следует за последним элементом, стертым при вызове функции, который является концом вектора, если операция стерла последний элемент в последовательности».
Этот код вылетает, но если я использую if (it == res.end ()), а затем возвращает, он работает. Как придешь? Обрабатывает ли цикл for функцию res.end (), чтобы оператор неравенства не работал?