所谓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. TypeScript 面向对象基础知识

    孙广东  2016.4.5 JavaScript如今到处都是.web.server(通过NodeJS).移动应用(通过各种框架).全部这些,TypeScript都能够使用,而且能够为JavaScrip ...

  2. 【BIRT】修改BIRT的背景颜色

    修改BIRT报表的背景颜色都在这里了 在BIRT的webcontent/birt/styles/目录下有如下文件列表: dialogbase.css文件修改 dialogbase_rtl.css文件修 ...

  3. 阿里云rds linux平台使用wget 工具下载备份与日志文件

    1. 获取备份下载地址 RDS 控制台  备份恢复  数据备份,选择需要下载的备份集,点击“下载”. 点击“复制内网地址” 或 “复制外网地址” 来获取备份的 内网 或 外网 下载地址. 日志备份的地 ...

  4. python笔记-字符串

    >>> myString = 'hello world !' >>> print myString # print语句会调用str()函数 hello world ...

  5. Creating Physical Standby Using RMAN DUPLICATE...FROM ACTIVE DATABASE执行结果

    > run { > allocate channel prmy1 type disk; > allocate channel prmy2 type disk; > alloca ...

  6. [cocos2dx笔记010]用于UI的事件管理器

    cocos2dx有一个编辑器:cocostudio.眼下来说,已经是比較好用了.仅仅要载入导出的资源.就能够用上了.省去手动搭建面的麻烦. 可是.非常多须要事件的地方,操作比較麻烦,所以这里提供一个事 ...

  7. 解析URL中的携带的参数到Map

    手动解析URL字符串中的参数,写了一个工具类. final ; final ; public Map<String, String> parseRequestParam(String ur ...

  8. connect: Network is unreachable解決方法

    connect: Network is unreachable解決方法   解決方式:請確認ifcfg-eth0檔案設定 指令如下:   vi /etc/sysconfig/network-scrip ...

  9. Android系统应用信息中存储和缓存的计算方法

    进行例如以下操作: 设置->应用->选择一个应用->应用信息 会到达例如以下界面: 能够看到这个应用占用的磁盘空间. 先说结果,这几项会计算哪些文件(夹). 1.应用,由三项相加组成 ...

  10. linux 使用FIO测试磁盘iops 方法详解

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎, 包括:sync,mmap, libaio, posixaio, SG v3, splice, null, ...