Ich habe eine Liste von Zeichen und ich versuche, fortlaufende Duplikate zu entfernen, z. {'a', 'b', 'a', 'a', 'a'}
wird {'a', 'b', 'a'}
. Beim Entfernen der letzten 'a' itr2
Punkte zu nichts und ich bekomme einen Fehler "list iterator nicht dereferencable". Ich verstehe, warum das passiert, aber ich habe Schwierigkeiten, es zu lösen. Wie kann das gelöst werden und gibt es dafür bessere Möglichkeiten?Entfernen des letzten Elements in der Liste während der Iteration verursacht Fehler
Hier ist mein Code:
void removeDuplicates(list<char> &myList)
{
list<char>::iterator itr;
list<char>::iterator itr2;
for (itr = myList.begin(); itr != myList.end();)
{
itr2 = next(itr, 1);
if (tolower(*itr) == tolower(*itr2))
{
myList.erase(itr2);
}
else
{
++itr;
}
}
}
Danke, das ist perfekt. – Moose