16.3.1【deque容器基本概念、构造函数】

 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 }

 

posted @ 2021-04-26 10:29  yub4by  阅读(83)  评论(0)    收藏  举报