vector 删除一览

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() + 1v1.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;
               }
       }




猜你喜欢

转载自blog.csdn.net/qq_24950821/article/details/80211964