(1)插入元素后失效
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it=v.begin()+3;
cout<<*it<<endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it = v.begin()+3;
v.insert(it, 8);
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<endl;
}
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it = v.begin()+3;
v.insert(it, 8);//it失效,insert会返回一个新的有效迭代器
cout<<*it<<endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it = v.begin()+3;
it=v.insert(it, 8);
cout<<*it<<endl;
return 0;
}
(2)删除元素后失效
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v1={1,2,3,3,3,4,5,5,5,6};
vector<int>::iterator it;
for(it=v1.begin();it!=v1.end();it++)
{
if(*it==3)
v1.erase(it);
}
for(it=v1.begin();it!=v1.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
修改为全部删除3的代码
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v1 = {1, 2, 3, 3, 3, 4, 5, 5, 5, 6};
vector<int>::iterator it;
for (it = v1.begin(); it != v1.end(); )
{
if (*it == 3)
{
it = v1.erase(it);
}
else
{
++it;
}
}
for (it = v1.begin(); it != v1.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}