如果处理它,迭代器如何在向量中用于擦除功能无效?

时间:2016-04-14 08:05:24

标签: stl

这是我的代码

  std::vector<int> myvector;
  int i=1;
  for ( i=1; i<=50; i++) myvector.push_back(i);
  for ( i=0; i<50; i++) 
  {
      if(myvector[i]%2==0)
        {
            myvector.erase(myvector.begin()+i);
            i--;
        }
  }

这里我试图删除所有偶数,并在删除偶数后我正在调整计数器变量。但我没有得到理想的结果。为什么?

1 个答案:

答案 0 :(得分:0)

迈克尔提出的第二个建议比手动更有意义:

std::vector<int> myvector;
myvector.erase(std::remove_if(myvector.begin(), 
                              myvector.end(),
                              [](int x){return x % 2 == 0;}),
               myvector.end());