1 #include<iostream>
2 #include<stdlib.h>
3 using namespace std;
4 #include<deque>
5
6
7 /*
8 3.3 deque容器
9 3.3.1 deque基本概念
10 双端数组,可以对头端进行插入删除操作(类似于队列?)
11 deque与vector区别:
12 vector对于头部的插入删除效率低,数据量越大,效率越低
13 deque相对而言,对头部的插入删除速度回比vector快
14 vector访问元素时的速度会比deque快,这和两者内部实现有关
15 deque内部工作原理:
16 deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
17 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
18 deque容器的迭代器也是支持随机访问的
19
20 3.3.2 deque构造函数
21 deque<T> deqT; //默认构造形式
22 deque(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身
23 deque(n, elem); //构造函数将n个elem拷贝给本身
24 deque(const deque &deq); //拷贝构造函数
25 */
26
27
28 /*
29 void pd(deque<int> & d)
30 {
31 for(deque<int>::iterator it=d.begin(); it!=d.end(); it++)
32 {
33 *it = 100; //读取数据时可能会发生意外修改
34 cout << *it << " ";
35 }
36 cout << endl;
37 }
38 */
39
40
41 void pd(const deque<int> & d)
42 {
43 for(deque<int>::const_iterator it=d.begin(); it!=d.end(); it++) //对应使用只读迭代器
44 {
45 //*it = 100; //设置const后,该句报错,可防止读取是意外修改
46 cout << *it << " ";
47 }
48 cout << endl;
49 }
50
51
52 void test332()
53 {
54 deque<int> d1; //默认无参构造
55 for(int i=0; i<10; i++)
56 {
57 d1.push_back(i);
58 }
59 pd(d1);
60
61 deque<int> d2(d1.begin(), d1.end());
62 pd(d2);
63
64 deque<int> d3(10, 666); //10个666
65 pd(d3);
66
67 deque<int> d4(d1); //拷贝构造
68 pd(d4);
69 }
70
71
72 int main()
73 {
74 test332();
75
76 system("pause");
77 return 0;
78 }
