В чем разница инкрементирования итератора?
Мне нужно удалять значения из листа по мере итерации.
std::list<int> lst;
lst.push_back(3);
lst.push_back(3);
lst.push_back(3);
auto iter = lst.begin();
while (iter != lst.end()) {
if (*iter == 3)
{
lst.erase(iter++);
}
else {
iter++;
}
}
Этот пример работает. Но я не понимаю, в чем разница, если мы инкрементируем итератор при вызове функции и после вызова функции.
lst.erase(iter);
iter++;//Ошибка