В чем разница инкрементирования итератора?

Мне нужно удалять значения из листа по мере итерации.

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++;//Ошибка

Ответы (0 шт):