#include <vector>
#include <algorithm>
int main(int argc,char *argv[])
{
std::vector<int> v(8);
for(auto x = v.begin(); x != v.end();)
{
for(*x % 2)
{
x = v.erase(x);
}
else
++x;
}
}
这样是正确的
下边看个不正确的:
int main(int argc,char *argv[])
{
std::vector<int> v(8);
for(auto x = v.begin(); x != v.end();x++)
{
for(*x % 2)
{
v.erase(x); //因为erase后,指针会自动只想被删除的下一个元素,所以,上边再++就会指向下一个的下一个,所以,这儿应该再
//x--; //加上这一句就对了
}
}
}