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