vector::erase():删除指定位置的元素或者删除指定范围内的元素。
iterator erase(iterator itor):删除指定位置上的元素,迭代器指向下一个元素。
iterator erase(iterase first,iterator last):删除一段范围内的元素,迭代器指向最后一个元素的下一个位置。
举例说明:
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main()
{
vector<int> v;
v.push_back(100);
v.push_back(300);
v.push_back(300);
v.push_back(300);
v.push_back(300);
v.push_back(500);
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it++)
{
if (*it == 300)
{
it = v.erase(it);
}
}
for (it = v.begin(); it != v.end(); it++)
{
cout << *it << endl;
}
system("pause");
return 0;
}
运行完的截图:
运行完我们可以发现,数组中有4个300,遍历删除应该能全部删除,为什么答案中还剩下两个300.根本原因还是因为删除后,迭代器指向下一个元素,然后it++,也就指向第三个元素;后面的就指向了第五个元素。这里的300删除的是第一个和第三个300.