从 C++ stl 列表中删除两个相同的值
Remove both same values from c++ stl list
我有一个像这样的列表
2 , 6 , 6 , 8 , 9
我想要这样的
2, 8 , 9
我写了一个代码
for(std::list<int>::iterator i = almostPrimeList.begin(); i != almostPrimeList.end(); ++i) {
for(std::list<int>::iterator j = ++std::list<int>::iterator(i); j != almostPrimeList.end(); ++j) {
if(*i == *j) {
cout <<*i << " found";
//almostPrimeList.remove(*i);
break;
}
}
}
似乎找到了重复的值,但是当我想删除它时会产生无限循环
如果删除 i 或 j 指向的元素,则迭代器将无效。
尝试:
++j ; // move to next
almostPrimeList.erase(i, j) ; // element pointedby j won't be rased
i = j ; // ok, reinitialize i
break ;
我有一个像这样的列表
2 , 6 , 6 , 8 , 9
我想要这样的
2, 8 , 9
我写了一个代码
for(std::list<int>::iterator i = almostPrimeList.begin(); i != almostPrimeList.end(); ++i) {
for(std::list<int>::iterator j = ++std::list<int>::iterator(i); j != almostPrimeList.end(); ++j) {
if(*i == *j) {
cout <<*i << " found";
//almostPrimeList.remove(*i);
break;
}
}
}
似乎找到了重复的值,但是当我想删除它时会产生无限循环
如果删除 i 或 j 指向的元素,则迭代器将无效。
尝试:
++j ; // move to next
almostPrimeList.erase(i, j) ; // element pointedby j won't be rased
i = j ; // ok, reinitialize i
break ;