неотменяемый итератор для std :: list при стирании цикла for C++
Я пытаюсь изменить размер списка (удалить элементы) внутри цикла foor, и по мере того, как итерации идут, уменьшают диапазон цикла de foor:
list<int>::iterator it, it2;
int pairs = 0;
for(it = lista.begin(); it != lista.end(); it++ )
{
int count =0;
for(it2 = lista.begin(); it2 != lista.end(); it2++)
{
if (*it2 == *it)
{
it2 = lista.erase(it2);
count = count + 1;
}
}
if (count/2 >= 2)
pairs = int(count/2) + pairs;
}
cout << pairs;
когда я запускаю приведенный выше код, я получаю сообщение об ошибке
итератор без разыменования для std::list
Проблема с первым итератором (it), кажется, что он теряется при стирании элемента из списка с помощью it2.
С уважением