У меня есть этот код:вектора Стирание итератор
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(), поэтому оператор, не равный нулю, не работает?
Почему бы не использовать 'res.clear()'? – Benoit
Аналогичный вопрос: http://stackoverflow.com/questions/347441/erasing-elements-from-a-vector – Naveen
, потому что это просто упрощение кода, я не пытаюсь удалить все элементы в реальном коде – hidayat