vector::erase():从指定容器删除指定位置的元素或某段范围内的元素
vector::erase()方法有两种重载形式
如下:
1、iterator erase(iterator _Where);
v1.erase( v1.begin( ) );//删除v1中的第一个元素
vec.erase(vec.begin()+2);删除第3个元素
2、iterator erase(iterator _First,iterator _Last);
//删除v1.begin() + 1和v1.begin() + 2两个元素
v1.erase(v1.begin() + 1, v1.begin() + 3);
vec.erase(vec.begin()+i,vec.begin()+j);删除区间[i,j-1];区间从0开始
如果是删除指定位置的元素时:
返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素; 之前的迭代器失效,重新赋值!
上面那种方法是给Iter重新赋于新v1的begin迭代器。
还有一种方法是直接赋删除元素的下一个迭代器给Iter
实现方法的代码如下:
for ( ; itVect != vectInt.end(); ) { // 删除 ++itVect{ if ( *itVect == 3 ) { itVect = vectInt.erase( itVect ); } else { ++itVect; } }