所谓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. HDU 5336 XYZ and Drops

    Problem Description XYZ is playing an interesting game called "drops". It is played on a r ...

  2. spi flash偶尔出现写入错误的情况

    spi flash W25Q128会偶尔出现写入错误的情况,会发现读出的值和写入的值不一致,需加入2次读出比较判断. W25QXX_Read(&temp_date_count,0x000000 ...

  3. some issues that you should be take care of when use the plupload module

    1. the config arguments 'browse_button' should not be a single element like button etc. because in i ...

  4. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...

  5. 细说WebSocket -- Node.js篇

    在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...

  6. C union共用体

    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 共用体定义: ...

  7. Atitit.数据库事务隔离级别 attilax 总结

    Atitit.数据库事务隔离级别 1. 事务隔离级别的作用 1 2. 在的隔离级别 2 3. 常见数据库的默认管理级别 3 1. 事务隔离级别的作用 较低的隔离级别可以增强许多用户同时访问数据的能力, ...

  8. Atitit。团队建设--管理最佳实践--如何留住核心人才,防止人才流失 ??

    Atitit.团队建设--管理最佳实践--如何留住核心人才,防止人才流失 ?? 1. 1.人才流失后果 1 1. 1.员工的离职带走商业技术秘密和客户等资源 1 2. 2.影响在职员工的情绪,极大挫伤 ...

  9. location 设定某个文件的过期时间,并不记录访问日志

    网页的根目录本来是: 6 root /app/www/default; [root@web01 default]# cat /app/server/nginx/conf/vhosts/default. ...

  10. CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用)

    CXF拦截器使用,创建一个使用SOAPHeader的安全验证xml格式: <soap:Header> <auth:authentication xmlns:auth="ht ...