当前位置: 代码迷 >> 综合 >> v.pop_back() “vs“ v.erase() “vs“ remove()
  详细解决方案

v.pop_back() “vs“ v.erase() “vs“ remove()

热度:73   发布时间:2023-12-06 05:06:30.0

//01 v.pop_back(); // 删除向量的尾元素02 v.erase(); // return 指向 最后被删除元素的 下一个元素的 迭代器01 v.erase( iterator it );              // 删除迭代器 it 指定的元素02 v.erase( iterator x,iterator y );    // 删除迭代器区间 [ x,y ) 的所有元素03 remove( iterator x,iterator y,const T& value ); 01 头文件 #include<algorithm> 02 是算法 而非方法 本质是后面的元素 覆盖 待删除的元素 所以并不改变 v.size()03 删除迭代器区间 [ x,y ) 的指定元素 value04 return 指向 最后被删除元素的 下一个元素的 迭代器

// eg.02
#include<bits/stdc++.h>
using namespace std;vector<int> v;int main()
{int n,i;while( cin>>n ){v.clear();for( i=0;i<n;i++ ) v.push_back(i);v.erase( v.begin(),v.begin()+3 );for( i=0;i<v.size();i++ ){if( i ) cout<<' ';cout<<v[i];}cout<<endl;}return 0;
}
// 6
// 3 4 5
// 9
// 3 4 5 6 7 8

// eg.03
#include<bits/stdc++.h>
using namespace std;vector<int> v;
vector<int>::iterator it,endit;int main()
{int n,i;while( cin>>n ){v.clear();for( i=0;i<n;i++ ) v.push_back(i%4);endit=remove( v.begin(),v.end(),0 );cout<<v.size()<<endl;for( it=v.begin();it!=endit;++it ){cout<<*it<<' ';}cout<<endl;for( it=v.begin();it!=v.end();++it ){cout<<*it<<' ';}cout<<endl;}return 0;
}
// 12
// 12
// 1 2 3 1 2 3 1 2 3
// 1 2 3 1 2 3 1 2 3 1 2 3

  相关解决方案