我有一個字符列表,我試圖刪除連續的重複項,例如{'a', 'b', 'a', 'a', 'a'}
變成{'a', 'b', 'a'}
。當刪除最後的'a'itr2
指向任何東西,我得到一個「列表迭代器不可忽略」的錯誤。我明白爲什麼會發生這種情況,但我很難解決它。這怎麼解決,有沒有更好的方法來做到這一點?迭代時刪除列表中的最後一個元素導致錯誤
這裏是我的代碼:
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;
}
}
}
謝謝你,這是完美的。 – Moose