前两篇博文中已经介绍了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 }