所谓deque,是"double-ended queue"的缩写;
  它是一种动态数组形式,可以向两端发展,在尾部和头部插入元素非常迅速;
  在中间插入元素比较费时,因为需要移动其它元素;(No)
  双端队列容器,在序列的两端放置和删除元素是高效的;
  而vector只是在序列末尾插入才是高效的。

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
 
/* strdeque.cpp
    所谓deque,是"double-ended queue"的缩写;
    它是一种动态数组形式,可以向两端发展,在尾部和头部插入元素非常迅速;
    在中间插入元素比较费时,因为需要移动其它元素;(No)
    双端队列容器,在序列的两端放置和删除元素是高效的;
    而vector只是在序列末尾插入才是高效的。
*/

#include <iostream>
#include <deque>

using namespace std;

int main(void)
{
    //push_front();
    //push_back();
    //pop_front();
    //pop_back();
    deque<int> d;
    d.push_back();
    d.push_back();
    d.push_back();
    d.push_front();
    ; i < d.size(); i++)
    {
        cout << "d[" << i << "] = " << d[i] << endl;
    }
    d.pop_front();
    d[;
    ; i < d.size(); i++)
    {
        cout << "d[" << i << "] = " << d[i] << endl;
    }

//迭代器遍历
    typedef deque<int>::iterator PITER;
    for (PITER piter = d.begin(); piter != d.end(); piter++)
    {
        cout << *piter << endl;
    }

//大小度量
    cout << d.size() << endl;
    d.resize();
    cout << d.size() << endl;
    cout << d.max_size() << endl;

//返回函数
    //begin front rbegin 下同
    //end back rend
    PITER pIter = d.begin();
    cout << "The first element is " << *pIter << endl;
    *pIter = ;
    pIter = d.begin();
    cout << "The first element is " << *pIter << endl;
    int &nRet = d.front();
    cout << "The first element is " << nRet << endl;

typedef deque<int>::reverse_iterator PREVITER;
    PREVITER pRevIter = d.rbegin();
    cout << "The last element is " << *pRevIter << endl;

//判断是否为空
    if (d.empty())
    {
        cout << "empty" << endl;
    }

//deque访问
    deque<char> dchar;
    dchar.push_back('A');
    dchar.push_back('B');
    dchar.push_back('C');
    dchar.push_back('D');
    ; i < dchar.size(); i++)
    {
        cout << dchar.at(i) << " ";
    }
    cout << endl;

//deque重置技术
    deque<char> dchar2;
    dchar2.push_back('a');
    dchar2.push_back('b');
    dchar2.push_back('c');
    dchar2.push_back('d');
    dchar.assign(dchar2.begin(), dchar2.end());
    ; i < dchar.size(); i++)
    {
        cout << dchar.at(i) << " ";
    }
    cout << endl;

//容器内容交换
);
    ; i < d1.size(); i++)
    {
        cout << d1.at(i) << " ";
    }
    cout << endl;
    deque<);
    d1.swap(d2);
    ; i < d1.size(); i++)
    {
        cout << d1.at(i) << " ";
    }
    cout << endl;

//deque插入和删除技术
);
    ; i < dInsert.size(); i++)
    {
        cout << dInsert.at(i) << " ";
    }
    cout << endl;
    dInsert.insert(dInsert.end(), );
    ; i < dInsert.size(); i++)
    {
        //cout << dInsert.at(i) << " ";
        cout << dInsert[i] << " ";
    }
    cout << endl;

//erase操作
    //注意:尽量少用erase(pos)和erase(beg,end)
    /*
    deque<int> dErase(3, 7);
    dErase.erase(dErase.end());
    for (PITER p = dErase.begin(); p != dErase.end(); p++)
    {
        cout << *p << " ";
    }
    cout << endl;
    */

//clear操作
);
    for (PITER p = dClear.begin(); p != dClear.end(); p++)
    {
        cout << *p << " ";
    }
    cout << endl;
    dClear.clear();
    if (dClear.empty())
    {
        cout << "empty it!" << endl;
    }

//除此之外还有关系运算符
    // == > >= < <=等等 操作省略

cin.get();
    ;
}

STL容器:deque双端队列学习的更多相关文章

  1. stl之deque双端队列容器

    deque与vector很相似,不仅能够在尾部插入和删除元素,还能够在头部插入和删除. 只是当考虑到容器元素的内存分配策略和操作性能时.deque相对vector较为有优势. 头文件 #include ...

  2. STL标准库-容器-deque 双端队列

    头文件: #include<deque> 常用操作: https://www.cnblogs.com/LearningTheLoad/p/7450948.html

  3. deque双端队列容器

    //deque双端队列容器 //deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector不同的是, //deque采用的分块线性存储结构来存储数据,每块的大小一般为512字节 ...

  4. deque双端队列笔记

    clear()clear()clear():清空队列 pushpushpush_back()back()back():从尾部插入一个元素. pushpushpush_front()front()fro ...

  5. Java 集合深入理解(10):Deque 双端队列

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...

  6. c++ deque 双端队列

    双端队列: 函数 描述 c.assign(beg,end)c.assign(n,elem)  将[beg; end)区间中的数据赋值给c.将n个elem的拷贝赋值给c. c.at(idx)  传回索引 ...

  7. 算法-deque双端队列

    Python的deque模块,它是collections库的一部分.deque实现了双端队列,意味着你可以从队列的两端加入和删除元素 1.基本介绍 # 实例化一个deque对象d = deque()d ...

  8. deque双端队列(常用方法总结)

    /*关于C++ STL中deque的学习*/ #include<cstdio> #include<iostream> #include<deque> using n ...

  9. [STL] deque 双端队列

随机推荐

  1. android6.0权限管理工具EasyPermissionUtil

    前言 android6.0開始,权限的申请发生了改变,申请变的动态化,也就是执行时权限,和iOS相仿,动态化的意思是指,在每次使用须要危急权限的方法的时候.须要检查程序是否获得了该权限的许可.动态化的 ...

  2. ubuntu16.4安装后做的事情

    1.安装搜狗拼音输入法 http://pinyin.sogou.com/linux/help.php 2.安装谷歌浏览器 http://jingyan.baidu.com/article/335530 ...

  3. PHP递归方式把一个数组里面的null转换为空字符串”的方法

    在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把null转换成空字符串'',这个时候就需要递归的方式进行.直接上代码如下: //递归方式把数组或字符串 n ...

  4. Linux-软件包管理-rpm命令管理-校验、文件提取

    rpm -V httpd 查看已安装的apache包中文件信息是否已经被人修改 rpm -ql httpd 查看已安装的apache包中文件的位置 vim /etc/httpd/conf/httpd. ...

  5. Windows2008 R2下,应用程序池 'XXXXXXXX' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。

    转:http://www.cnblogs.com/freeton/archive/2012/08/28/2660585.html http://www.hack001.com/post/151

  6. .net core +codefirst(.net core 基础入门,适合这方面的小白阅读) 【我们一起写框架】领域驱动设计的CodeFirst框架(一)—序篇

    .net core +codefirst(.net core 基础入门,适合这方面的小白阅读)   前言 .net core mvc和 .net mvc开发很相似,比如 视图-模型-控制器结构.所以. ...

  7. EMQ ---客户端上线自动订阅主题

    通过修改配置文件即可实现. emq v2.3.11,软件架构做了调整,把功能集成在了emq_modules模块,/data/loaded_plugins默认会加载emq_modules. 我们只需要改 ...

  8. android何如获取SIM卡提供国家代码(ISO)

    TelephonyManager telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); telMana ...

  9. GuozhongCrawler系列教程 (4) StartContext具体解释

    StartContext是注入时全部seed的上下文信息假设爬虫在抓取过程其中须要共享一些变量.那么可使用StartContext作为容器. 构造器具体资料 StartContext public S ...

  10. IOS性能调优系列:使用Allocation动态分析内存使用情况

    硬广:<IOS性能调优系列>第三篇,持续更新,欢迎关注. <IOS性能调优系列:Analyze静态分析>介绍了使用静态分析方法查找IOS内存泄漏的方法,<IOS性能调优系 ...