C++之vector容器初学(二)——插入和删除

本文详细介绍了C++中vector容器的插入和删除操作,包括在指定位置插入单个元素、多个元素以及一个区间的数据,以及清除容器所有元素、删除指定区间和单个元素的方法。通过示例代码展示了各种操作的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载 点击打开链接

插入操作:

理论知识

² vector.insert(pos,elem);   //在pos位置插入一个elem元素的拷贝,返回新数据的位置。

² vector.insert(pos,n,elem);   //在pos位置插入n个elem数据,无返回值。

² vector.insert(pos,beg,end);   //在pos位置插入[beg,end)区间的数据,无返回值 

简单案例

vector<int> vecA;

vector<int> vecB;

 

vecA.push_back(1);

vecA.push_back(3);

vecA.push_back(5);

vecA.push_back(7);

vecA.push_back(9);

 

vecB.push_back(2);

vecB.push_back(4);

vecB.push_back(6);

vecB.push_back(8);

 

vecA.insert(vecA.begin(), 11); //{11, 1, 3, 5, 7, 9}

vecA.insert(vecA.begin()+1,2,33); //{11,33,33,1,3,5,7,9}

vecA.insert(vecA.begin() , vecB.begin() , vecB.end() ); //{2,4,6,8,11,33,33,1,3,5,7,9}

测试代码:

 

[cpp]  view plain  copy
 
  1. #include <iostream>  
  2. using namespace std;  
  3. #include "vector"  
  4.   
  5. void printV(vector<int> &v)  
  6. {  
  7.     for (int i = 0; i < v.size();i++)  
  8.     {  
  9.         cout <<v[i]<< " ";  
  10.     }  
  11.     cout << endl;  
  12. }  
  13.   
  14. //插入操作  
  15. void main1()  
  16. {  
  17.     vector<int> v1;  
  18.     v1.insert(v1.begin(),1);//在开始位置插入元素1  
  19.     printV(v1);  
  20.     v1.insert(v1.begin(),2,33);//在开始位置插入两个33  
  21.     printV(v1);  
  22.     v1.insert(v1.begin(),v1.begin(),v1.end());//在开始位置插入整个区间元素  
  23.     printV(v1);  
  24. }  
  25.   
  26.   
  27. int main()  
  28. {  
  29.       
  30.     cout << "插入操作:" << endl;  
  31.     main1();  
  32.     return 0;  
  33. }  

 

 

 

 

 

vector的删除

理论知识

² vector.clear(); //移除容器的所有数据

² vec.erase(beg,end);  //删除[beg,end)区间的数据,返回下一个数据的位置。

² vec.erase(pos);    //删除pos位置的数据,返回下一个数据的位置。

简单案例:

删除区间内的元素

vecInt是用vector<int>声明的容器,现已包含按顺序的1,3,5,6,9元素。

vector<int>::iterator itBegin=vecInt.begin()+1;

vector<int>::iterator itEnd=vecInt.begin()+2;

vecInt.erase(itBegin,itEnd);

//此时容器vecInt包含按顺序的1,5,6,9三个元素。

 

假设 vecInt 包含1,3,2,3,3,3,4,3,5,3,删除容器中等于3的元素

for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); )    //小括号里不需写  ++it

{

   if(*it == 3)

   {

        it  =  vecInt.erase(it);       //以迭代器为参数,删除元素3,并把数据删除后的下一个元素位置返回给迭代器。

         //此时,不执行  ++it;  

   }

   else

   {

       ++it;

   }

}

 

//删除vecInt的所有元素

vecInt.clear(); //容器为空

 

测试代码:

 

[cpp]  view plain  copy
 
  1. #include <iostream>  
  2. using namespace std;  
  3. #include "vector"  
  4.   
  5. void printV(vector<int> &v)  
  6. {  
  7.     for (int i = 0; i < v.size();i++)  
  8.     {  
  9.         cout <<v[i]<< " ";  
  10.     }  
  11.     cout << endl;  
  12. }  
  13.   
  14.   
  15. //删除操作  
  16. void main2()  
  17. {  
  18.     vector<int> v1(10);  
  19.     for (int i = 0; i < v1.size(); i++)  
  20.     {  
  21.         v1[i] = i + 1;  
  22.     }  
  23.     printV(v1);  
  24.     v1.erase(v1.begin(),v1.begin()+4);//区间删除  
  25.     printV(v1);  
  26.     v1.erase(v1.begin());//头部删除  
  27.     printV(v1);  
  28.     v1[0] = 23;  
  29.     v1[1] = 22;  
  30.     printV(v1);  
  31.     for (vector<int>::iterator it = v1.begin(); it != v1.end();)//删除容器里等于8的元素  
  32.     {  
  33.         if (*it == 8)  
  34.         {  
  35.             it = v1.erase(it);  
  36.         }  
  37.         else  
  38.             it++;  
  39.     }  
  40.     printV(v1);  
  41. }  
  42.   
  43. int main()  
  44. {  
  45.     cout << "删除操作:" << endl;  
  46.     main2();  
  47.     return 0;  
  48. }  


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值