STL中的序列式容器——deque(双端队列)
STL中的序列式容器——deque(双端队列)
deque 是双端队列类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
deque是C++ STL的一个重要成员,使用它时需要包含头文件:
#include <deque>;
deque和vector非常相似,属于序列式容器,都是采用动态数组来管理元素,提供随机存取,并且有着和vector一样的接口,不同的是deque具有首尾两端进行快速插入、删除的能力。
一、deque 的初始化
有以下方式,举例说明如下:
deque<int> a;
deque<int> a(10); //定义了10个整型元素的双端队列(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
deque<int> a(10,1); //定义了10个整型元素的双端队列,且给出每个元素的初值为1
deque<int> a(b); //用b向量来创建a双端队列,整体复制性赋值
deque<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
int b[7]={1,2,3,4,5,9,8};deque<int> a(b,b+7); //从数组中获得初值
二、deque 对象的重要操作
列举如下:
a.back(); //返回a的最后一个元素
a.front(); //返回a的第一个元素
a[i]; //返回a的第i个元素,当且仅当a[i]存在
a.at(i); //返回位置n处的元素。a.at(i)与a[i]差不多
a.clear(); //清空a中的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.push_back(5);//在a的最后一个向量后插入一个元素,其值为5
a.push_front(5);//在a的最前一个向量前插入一个元素,其值为5
a.pop_front();//从容器的首部移走数据;
a.pop_back();//从容器的尾部移走数据;
a.size(); //返回a中元素的个数
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.swap(b); //b为双端队列,将a中的元素和b中的元素进行整体性交换
a==b; //b为双端队列,双端队列的比较操作还有!=,>=,<=,>,<,对于==来说,首先比较它们的大小,若size相等,则依次比较元素;对于其他运算符,依次比较元素
特别注意:
deque的函数操作还有很多,大部分操作和vector的用法相同,但从双端队列的特性出发,并不支持相关函数,因此本文只列举了双端队列支持且常用的函数。
STL中的序列式容器——deque(双端队列)相关推荐
- STL源码剖析 序列式容器 deque双端队列
相较于vector的内存拷贝,deque在内存不足时只需要进行内存的拼接操作即可,不需要重新配置.复制.释放等操作,代价就是迭代器的架构不是一个普通的指针,比较复杂 d e q u e 的迭代器 de ...
- C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set
目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...
- C++---deque双端队列
deque deque双端队列,是C++,STL标准模板库中提供的一种容器. 什么是双队列 队列:是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear) ...
- python deque双端队列的神奇用法
python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...
- C++ STL : 模拟实现STL中的关联式容器map和set
目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...
- STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器
Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...
- stl之deque双端队列容器
deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除.不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势. 头文件 #include ...
- C++中STL容器之双端队列——dequeue
1.双端队列介绍 双端队列(dequeue) 与vector很类似,采用线性表顺序存储结构,且支持随机访问,即可以直接用下标来访问元素.但与vector有区别: deque采用分块的线性存储结构来存储 ...
- STL源码剖析 deque双端队列 概述
vector是单向开口的连续线性空间,deque是一种双向开口的连续线性空间. deque可以在头尾两端分别进行元素的插入和删除操作 vector和deque的差异 1,deque允许常数时间内对于头 ...
- Java 集合深入理解(10):Deque 双端队列
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...
最新文章
- 字符串中 去掉字符串前后空格以、'\t'(tab) C函数实现,附sscanf正则方式
- 【学习笔记】SAP CO模块概念信息(上)
- SQL学习之去重复查询
- C# 对轻量级(IoC Container)依赖注入Unity的使用
- SSM整理笔记1——SSM网站初步功能设计
- java字符串abcde_java aababcabcdabcde,获取字符串中每一个字母出现的次数
- 这一刻只想好好做个平凡的人
- js最基础知识回顾1(参数,函数,网页换肤)
- 鲸会务,多场景覆盖数字化会议管家
- 2018校招-挂面-H3C-技术支持工程师
- osgEarth示例分析——osgearth_graticule
- iOS应用性能调优的25个建议和技巧
- Oracle 外部表
- 使用mpvue实现动态图片波浪图效果
- 数据挖掘之坦坦尼克号获救情况分析
- 【模糊综合评价的运用】——《电子舌技术在食用盐模糊感官评价中的应用》论文笔记(内附MATLAB程序)
- HTML 标签 02
- 如何设置亚马逊code促销活动?
- Python语法规范
- LTE射频拉远单元数字中频方案(六)
热门文章
- Flutter动画系列之AnimatedWidget
- 焦虑不安急于求成,本质上就是一种懒惰
- FFmpeg总结(八)windows下用ffmpeg获取视频缩略图
- mysql++缓冲区_思考mysql内核之初级系列4--innodb缓冲区管理(摘自老杨)
- linux 文件 跳板机_linux 跳板机得搭建
- mysql 语法手册_MySQL语法大全_自己整理的学习笔记
- java countdowntimer_(六)Android中使用CountDownTimer实现倒计时功能
- nbi可视化_教您通过NBI大数据可视化工具零编码轻松实现桑基图的制作
- 如何协助 MySQL 实现 Oracle 高级分析函数
- sublime livereload插件