deque双端队列容器

 1 //deque双端队列容器
 2 //deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector不同的是,
 3 //deque采用的分块线性存储结构来存储数据,每块的大小一般为512字节,成为一个deque块
 4 //所有deque块使用一个Map块进行管理,每个Map数据项纪录各个deque块的首地址,这样一来,deque的
 5 //头部和尾部都可插入和删除元素,而不需移动其他元素 。使用push_back()方法在尾部插入元素,会扩张队列
 6 //而使用push_front()方法在首部插入元素和使用insert()方法在中部插入元素,只是将原位置上的元素值覆盖,不会增加新元素
 7 
 8 
 9 #include<deque>
10 #include<iostream>
11 using namespace std;
12 int main()
13 {
14     //创建没有任何元素的deque对象 
15     deque<int> d;
16     //创建具有n个元素的deque对象
17     deque<int> d1(10); 
18     //创建具有n个元素的deque对象,并赋初值
19     deque<int> d2(10,8.5);
20     d.push_back(1);
21     d.push_back(2);
22     d.push_back(3);
23     cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
24     //从头部插入元素不会增加新的元素,只将原有的元素覆盖
25     d.push_front(10);
26     d.push_front(20);
27     cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
28     //从中间插入元素,不会增加新元素,只将原有的元素覆盖
29     d.insert(d.begin()+1,88);
30     cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
31     //前向遍历
32     for(int i=0;i<d.size();i++)
33     {
34         cout<<d[i]<<" ";
35      } 
36      cout<<endl;
37      //以前向迭代器的方式遍历
38      deque<int>::iterator it;
39      for(it=d.begin();it!=d.end();it++)
40      {
41          cout<<*it<<" ";
42       } 
43       cout<<endl;
44       deque<int> d3;
45       d3.push_back(1);
46       d3.push_back(2);
47       d3.push_back(3);
48       d3.push_back(4);
49       d3.push_back(5);
50       d3.pop_front();
51       d3.pop_front();
52       deque<int>::iterator it1;
53       for(it1=d3.begin();it1!=d3.end();it1++)
54       {
55           cout<<*it1<<" ";
56       }
57       cout<<endl;
58       //从尾部删除元素 
59       d3.pop_back();
60       for(it1=d3.begin();it1!=d3.end();it1++)
61       {
62           cout<<*it1<<" ";
63       }
64       cout<<endl;
65       d3.erase(d3.begin()+1);
66       for(it1=d3.begin();it1!=d3.end();it1++)
67       {
68           cout<<*it1<<" ";
69       }
70       cout<<endl;
71       d3.clear();
72       cout<<d3.size()<<endl;
73     return 0;
74  } 

猜你喜欢

转载自www.cnblogs.com/zjl192628928/p/9163933.html
今日推荐