C++ Reference: Standard C++ Library reference: Containers: deque: deque
admin
2024-03-23 19:44:39
0

C++官网参考链接:https://cplusplus.com/reference/deque/deque/

类模板

std::deque
template < class T, class Alloc = allocator > class deque;
双端队列
deque(通常发音像"deck")是双端队列的不规则首字母缩写。双端队列是具有动态大小的顺序容器,可以在两端(前端或后端)进行扩展或收缩。
特定的库可能以不同的方式实现双端队列,通常是作为动态数组的某种形式。但在任何情况下,它们都允许通过随机访问迭代器直接访问单个元素,并根据需要通过扩展和收缩容器自动处理存储。
因此,它们提供了类似于vectors的功能,但可以在序列的开头高效地插入和删除元素,而不仅仅是在序列的末尾。但是,与vectors不同,deques不能保证将其所有元素存储在连续的存储位置:通过偏移指向另一个元素的指针来访问双端队列中的元素会导致未定义的行为。
vectors和双端队列都提供了非常相似的接口,也可以用于类似的目的,但在内部它们的工作方式却截然不同:vector使用一个单独的数组,需要偶尔重新分配以实现增长,而双端队列的元素可以分散在不同的存储块中,容器在内部保存必要的信息,以便在恒定的时间内通过统一的顺序接口(通过迭代器)直接访问其任何元素。因此,双端队列在内部比vectors更复杂一些,但这允许它们在某些情况下更有效地增长,特别是对于非常长的序列,在这种情况下重新分配会变得更加昂贵。
对于包含频繁插入或删除除开始或结束位置以外的元素的操作,双端队列的性能较差,迭代器和引用的一致性不如lists和forward lists。

容器的属性
按顺序排列
顺序容器中的元素按照严格的线性顺序排列。各个元素通过它们在该序列中的位置进行访问。
动态数组
它通常作为动态数组实现,允许直接访问序列中的任何元素,并在序列的开头或结尾提供相对快速的添加/删除元素。
能够感知的内存分配器
容器使用分配器对象动态处理其存储需求。

模板形参 
T
元素的类型。
别名为成员类型deque::value_type。
Alloc
用于定义存储分配模型的分配器对象的类型。默认情况下,使用分配器(allocator)类模板,它定义了最简单的内存分配模型,并且与值无关。
别名为成员类型deque::allocator_type。

成员类型
C++98

member typedefinitionnotes
value_typeThe first template parameter (T)
allocator_typeThe second template parameter (Alloc)defaults to: allocator
referenceallocator_type::referencefor the default allocator: value_type&
const_referenceallocator_type::const_referencefor the default allocator: const value_type&
pointerallocator_type::pointerfor the default allocator: value_type*
const_pointerallocator_type::const_pointerfor the default allocator: const value_type*
iteratora random access iterator to value_typeconvertible to const_iterator
const_iteratora random access iterator to const value_type
reverse_iteratorreverse_iterator
const_reverse_iteratorreverse_iterator
difference_typea signed integral type, identical to: iterator_traits::difference_typeusually the same as ptrdiff_t
size_typean unsigned integral type that can represent any non-negative value of difference_typeusually the same as size_t

C++11

member typedefinitionnotes
value_typeThe first template parameter (T)
allocator_typeThe second template parameter (Alloc)defaults to: allocator
referencevalue_type&
const_referenceconst value_type&
pointerallocator_traits::pointerfor the default allocator: value_type*
const_pointerallocator_traits::const_pointerfor the default allocator: const value_type*
iteratora random access iterator to value_typeconvertible to const_iterator
const_iteratora random access iterator to const value_type
reverse_iteratorreverse_iterator
const_reverse_iteratorreverse_iterator
difference_typea signed integral type, identical to:
iterator_traits::difference_type
usually the same as ptrdiff_t
size_typean unsigned integral type that can represent any non-negative value of difference_typeusually the same as size_t

成员函数
(constructor)    Construct deque container (public member function)
(destructor)    Deque destructor (public member function)
operator=    Assign content (public member function)

迭代器: 
begin    Return iterator to beginning (public member function)
end    Return iterator to end (public member function)
rbegin    Return reverse iterator to reverse beginning (public member function)
rend    Return reverse iterator to reverse end (public member function)
cbegin    Return const_iterator to beginning (public member function)
cend    Return const_iterator to end (public member function)
crbegin    Return const_reverse_iterator to reverse beginning (public member function)
crend    Return const_reverse_iterator to reverse end (public member function)

容量:
size    Return size (public member function)
max_size    Return maximum size (public member function)
resize    Change size (public member function)
empty    Test whether container is empty (public member function)
shrink_to_fit    Shrink to fit (public member function)

元素访问:
operator[]    Access element (public member function)
at    Access element (public member function)
front    Access first element (public member function)
back    Access last element (public member function)

修改器:
assign    Assign container content (public member function)
push_back    Add element at the end (public member function)
push_front    Insert element at beginning (public member function)
pop_back    Delete last element (public member function)
pop_front    Delete first element (public member function)
insert    Insert elements (public member function)
erase    Erase elements (public member function)
swap    Swap content (public member function)
clear    Clear content (public member function)
emplace    Construct and insert element (public member function)
emplace_front    Construct and insert element at beginning (public member function)
emplace_back    Construct and insert element at the end (public member function)

分配器: 
get_allocator    Get allocator (public member function) 

非成员函数重载: 
relational operators    Relational operators for deque (function)
swap    Exchanges the contents of two deque containers (function template)

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...