#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> v1 = {4,2,3,1,5,6,9,8,6};
for (vector<int>::iterator itor = v1.begin(); itor != v1.end();)
{
//删除数字3
if (*itor == 3)
{
v1.erase(itor);
}
else
{
++itor;
}
}
for (auto i : v1)
{
cout << i << endl;
}
return 0;
}
在运行此删除时 ,会报错 容器和迭代器不兼容报错
此时 其实是 迭代器在进行了 对数字三删除后,造成了迭代器itor的失效。,此时我们需要将迭代器指向删除后的vector位置 则迭代器就不会发生失效和中断。
运行结果,成功显示