从 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 ;