C++ STL之deque的基本操作

时间:2022-04-26
本文章向大家介绍C++ STL之deque的基本操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前两篇博文中已经介绍了vector和list的两种容器,我们发现他们各有各的优缺点,vector在内存中连续存储,支持随机访问,但是查找和删除的效率比较低,而list在内存中是链式存储的查找和删除的效率很高,但是不支持随机存储,那么deque就综合和两者的优点,将若干连续的内存通过某种手段拼接在一起,而看起来像是在同一段内存中,通过对[]运算符的重载可以使其像数组一样访问数据,而插入和删除操作效率只受所在内存段数据的影响。

这里有一篇深入理解deque实现细节的博文:http://www.programlife.net/stl-deque.html

 1 #include<iostream>
 2 #include<deque>
 3 using namespace std;
 4 void print(deque<int> dq)
 5 {
 6     deque<int>::iterator it=dq.begin();
 7     for(;it!=dq.end();it++)
 8     {
 9         cout<<*it<<" ";
10     }
11     cout<<endl;
12 }
13 int main()
14 {
15     //初始化
16     int num[10]={0,1,2,3,4,5,6,7,8,9};
17     deque<int> dq(num,num+10);
18     print(dq);
19     
20     //增加元素
21     //insert
22     deque<int>pp(num,num+3);
23     print(pp);
24     deque<int>::iterator it1=pp.begin();
25     deque<int>::iterator it2=pp.end();
26     dq.insert(dq.end(),it1,it2);
27     print(dq);
28     //push
29     dq.push_back(10);
30     dq.push_front(-1);
31     print(dq);
32 
33     //删除deque中只有erase,没有remove
34     //erase
35     dq.erase(dq.begin()+5);
36     print(dq);
37     
38     //[]的随机访问
39     dq[1]=100;
40     print(dq);
41 
42     return 0;
43 }