STL итератор: ошибка утверждения

Почему следующий код вызывает ошибку утверждения: Expression: list iterators incompatible?

#include <list>
using namespace std;

int main()
{
list<int> a;
a.push_back(1);
list<int>::iterator iter=a.begin();
a.erase(iter);

iter==a.end();
}

0

Решение

Что вы хотите сделать, это:

#include <list>
using namespace std;

int main()
{
list<int> a;
a.push_back(1);
list<int>::iterator iter=a.begin();
iter = a.erase(iter);
}
1

Другие решения

Итератор в данной коллекции a становится недействительным, когда a изменения, например удалив элемент.

0

При стирании iter это было признано недействительным. Я думаю, что недействительный итератор не может быть использован ни для чего, кроме как присвоения им, даже не сравнивая их ни с чем. Возможно, вы хотели использовать

iter = a.end();
0

итератор недействителен после стирания. в вашем случае само удаление возвращает (вы его отбрасываете) конечный итератор, как вы удаляли последний элемент

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector