举一个例子,创建了一个int数组,p是一个迭代器指向数组第一个位置,q指向p后面的一个位置。
erase(p)方法是将迭代器p指向的元素从数组中删除。后面的元素会自动向前补齐!!
这就是我犯错误的地方!!!
我以为将p删除了之后他就没了,然后q指向的还是没删除之前的元素,这就大错特错了,其实q,p是指向的位置,不是与我们的元素绑定的,我们在下面的例子中把p指向的元素也就是0删除以后,后面的元素自动向前补齐,现在p指向的就是1,q指向的就是2,一定记住迭代器指向的是位置而不是元素!!!
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>nums{0,1,2,3};
auto p=nums.begin();
auto q=p+1;
cout<<*p<<endl;
cout<<*q<<endl;
nums.erase(q);
cout<<*p<<endl;
cout<<*q<<endl;
return 0;
}