在vector中,使用erase来剔除对应的元素,但是使用iterator的时候需要注意不要让iterator变成野指针
vector的erase
在C++ Reference 中,对erase的说明如下:
vector::erase - C++ Reference http://www.cplusplus.com/reference/vector/vector/erase/
//c++98
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
//c++11
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
Erase elements
Removes from the vector either a single element (position) or a range of elements ([first,last)).
This effectively reduces the container size by the number of elements removed, which are destroyed.
可以看到erase方法可以删除vector中的一个元素,或者删除一个范围
参数说明:
position: 在vector中删除的元素的位置
first, last: 在vector中的范围[first, last),即 >= first, < last
demo
// erasing from vector
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
vector<int> myvector;
// set some values (from 1 to 10)
for (int i=1; i<=10; i++){
myvector.push_back(i);
}
// erase the 6th element
myvector.erase (myvector.begin()+5);
// erase the first 3 elements:
myvector.erase (myvector.begin(),myvector.begin()+3);
cout << "myvector contains:";
for (unsigned i