У меня есть итератор списка, который проходит через список и удаляет все четные числа. Я могу использовать итератор списка, чтобы распечатать цифры в порядке, но я не могу использовать список remove() и передать в разыменованный итератор.
Я заметил, что когда действие remove() действует, * itr повреждается? Может кто-нибудь объяснить это?
#include <iostream>
#include <list>
#define MAX 100
using namespace std;
int main()
{
list<int> listA;
list<int>::iterator itr;
//create list of 0 to 100
for(int i=0; i<=MAX; i++)
listA.push_back(i);
//remove even numbers
for(itr = listA.begin(); itr != listA.end(); ++itr)
{
if ( *itr % 2 == 0 )
{
cout << *itr << endl;
listA.remove(*itr); //comment this line out and it will print properly
}
}
}