16.3.3【deque容器的插入和删除操作】

复制代码
  1 #include<iostream>
  2 #include<stdlib.h>
  3 using namespace std;
  4 #include<deque>
  5 
  6 
  7 /*
  8     3.3.5 deque插入和删除
  9         两端插入操作:
 10             push_back(elem); //在容器尾部添加一个数据
 11             push_front(elem); //在容器头部插入一个数据
 12             pop_back(); //删除容器最后一个数据
 13             pop_front(); //删除容器第一个数据
 14         指定位置操作:
 15             insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
 16             insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
 17             insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
 18             clear(); //清空容器的所有数据
 19             erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
 20             erase(pos); //删除pos位置的数据,返回下一个数据的位置。
 21 */
 22 
 23 
 24 void pd(const deque<int> & d)
 25 {
 26     for(deque<int>::const_iterator it=d.begin(); it!=d.end(); it++)
 27     {
 28         cout << *it << " ";
 29     }
 30     cout << endl;
 31 }
 32 
 33 
 34 void test335_1()
 35 {
 36     deque<int> d1;
 37 
 38     //尾插
 39     d1.push_back(10);
 40     d1.push_back(20);
 41 
 42     //头插
 43     d1.push_front(100);
 44     d1.push_front(200);
 45 
 46     pd(d1);
 47 
 48     //尾删
 49     d1.pop_back();
 50     pd(d1);
 51 
 52     //头删
 53     d1.pop_front();
 54     pd(d1);
 55 }
 56 
 57 
 58 void test335_2()
 59 {
 60     deque<int> d1;
 61     d1.push_back(10);
 62     d1.push_back(20);
 63     d1.push_front(100);
 64     d1.push_front(200);
 65     pd(d1);
 66 
 67     //insert一般插入
 68     d1.insert(d1.begin(), 1000);
 69     pd(d1);
 70     d1.insert(d1.end(), 2, 999); //插入两个999
 71     pd(d1);
 72 
 73     //insert按照区间插入
 74     deque<int> d2;
 75     d2.push_back(1);
 76     d2.push_back(2);
 77     d2.push_back(3);
 78     d1.insert(d1.begin(), d2.begin(), d2.end()); //将d2整个插入到d1头部
 79     pd(d1);
 80 }
 81 
 82 
 83 void test335_3()
 84 {
 85     deque<int> d1;
 86     d1.push_back(10);
 87     d1.push_back(20);
 88     d1.push_front(100);
 89     d1.push_front(200);
 90     pd(d1);
 91 
 92     //删除
 93     deque<int>::iterator it = d1.begin();
 94     it++;
 95     d1.erase(it); //利用迭代器删掉d1的第二个数据
 96     pd(d1);
 97 
 98     d1.erase(d1.begin(), d1.end()); //==d1.clear()
 99     pd(d1);
100 }
101 
102 
103 
104 int main()
105 {
106     test335_1();
107     test335_2();
108     test335_3();
109 
110     system("pause");
111     return 0;
112 }
复制代码

 

posted @   yub4by  阅读(112)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示