STL :双端队列容器 Deque

news/2024/5/19 22:33:02/

Deque

  • #include<deque>    using namesace std;

  • 双端队列容器 :双向开口连续线性空间;

  • 擅长尾部和头部添加或删除元素:常数阶;

  • 存储元素并不能保证所有元素都存储到连续的内存空间中;

  • deque 是动态的以分段连续空间组合而成(没有提供所谓空间保留 server 功能);

  • 是分段连续内存空间,有中央控制,维持整体连续的假象

  • deque 最大的工作就是维护分段连续的内存空间的整体性的假象,并提供随机存取的接口,避开了重新配置空间、复制、释放的轮回,代价就是复杂的迭代器架构

  • [deque 接口函数介绍](C++ deque get_allocator用法及代码示例 - 纯净天空)。

Capacity

NameRoleNotice
size返回矢量实际存储元素数目(实际数据量)
max_size返回矢量所能存储的最大的元素数目
resize更改矢量实际存储,指定长度若变长则默认填充新位置,变短则删除超出长度的元素
empty判断矢量存储是否为空
shrink_to_fit请求降低存储使得 capacity 和 size 匹配

Element access

NameRoleNotice
operator[ ]下标访问元素越界不抛出异常,直接报错
at返回索引所指的元素如果越界则抛出 out_of_range
front返回第一个元素
back返回最后一个元素

Modifiers

NameRoleNotice
assign将数据赋值给本身拷贝 n 个 elem :assign(n, elem)
拷贝区间数据:assign(beg, end)
push_back在容器尾部添加一个元素
push_front在容器头部添加一个元素
pop_back删除容器最后一个元素
pop_front删除容器第一个元素
insert指定位置插入元素的拷贝插入一个并返回位置:insert(pos, elem)
插入 n 个:insert(pos, n, elem)
插入区间 [ ) :insert(pos, beg, end)
erase删除指定数据,返回下一个数据的位置删除区间 [ ) :erase(beg, end)
删除指定位置:erase(pos)
swap交换另一相同类型的双端队列的内容
clear移除容器所有数据
emplacec11指定位置直接构造生成一个元素
emplace_frontc11容器头部生成一个元素,直接构造,减少复制移动
emplace_backc11容器尾部生成一个元素,直接构造,减少复制移动

Allocator

NameRoleNotice
get_allocator获取容器双端队列的分配器

Notice

  • 相比 vector ,增加了头部添加和删除的成员函数,同时删除了 capacity( )、reverse( )、data( ) 成员函数;

  • swap(deque1, deque2) :交换存储相同类型的元素,功能相同,语法不同;


http://www.ppmy.cn/news/47425.html

相关文章

系统需求分析

系统需求分析 需求分析是软件生存周期中相当重要的一个阶段。由于开发人员熟悉计算机但不熟悉应用 领域的业务&#xff0c;用户熟悉应用领域的业务但不熟悉计算机&#xff0c;因此对于同一个问题&#xff0c;开发人员和用 户之间可能存在认识上的差异。在需求分析阶段&#xff…

java记录-lambda表达式、接口应用、方法引用

基本形式 (str)->{System.out.println(str) };调用作为参数的接口实例的方法 1、用一个类实现接口&#xff0c;然后使用该类实例调用方法 2、匿名内部类 3、在 接口&#xff08;不能是抽象类&#xff09; 有且只有一个抽象方法时&#xff0c;可以使用lamda表达式来重写这个…

蓝桥 卷“兔”来袭编程竞赛专场-07明码加密 题解

赛题介绍 挑战介绍 清末&#xff0c;电报技术进入中国。上海大北水线电报公司在 1871 年选用了六千八百九十七个汉字&#xff0c;代以四码数字&#xff0c;编写成了中国最早的电报明码本。为了传输的内容可以保密&#xff0c;又设计出了将明码本加密的方法&#xff0c;于是就…

华为OD机试真题(Java),最小步骤数(100%通过+复盘思路)

一、题目描述 一个正整数数组 设为nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数。 要求&#xff1a; 第一步 必须从第一元素起 且 1<第一步步长<len/2 (len为数组长度)&#xff1b;从第二步开始只能以所…

Junit概述和快速入门

单元测试概述 在程序中&#xff0c;一个单元可以是一个完整的模块&#xff0c;但它通常是一个单独的方法或者程序 在面向对象的编程中&#xff0c;一个单元通常是整个界面&#xff0c;例如类&#xff0c;但可能是单个方法 JUnit是一个java编程语言的单元测试框架 通过先为最…

从头创建一个新的浏览器,这合理吗?

从头构建一个新浏览器&#xff1f;这如果是不是个天大的“伪需求”&#xff0c;便是一场开发者的噩梦&#xff01; 要知道&#xff0c;如果没有上百亿的资金和数百名研发工程师的投入&#xff0c;从头开始构建一个新的浏览器引擎&#xff0c;几乎是不可能的。然而SerenityOS系统…

Ubuntu18.04通过一根网线与树莓派建立连接,远程操作树莓派,向树莓派传文件

文章目录 前言1 树莓派设置静态IP1.1 不能登录到树莓派的图形化界面1.2 可以登录到树莓派的图形化界面 2 PC端的ubuntu18.04设置静态ip地址2.1 不使用图形化界面操作2.2 使用图形化界面进行操作 3 Putty软件3 FileZilla软件 前言 本篇博客的应用场景&#xff0c;前提条件如下&a…

【原理图专题】OrCAD Capture 设计规则(DRC)检查

在原理图设计完成后,需要进行DRC检查,DRC检查能协助工程师快速检查原理图的物理、电气规则是否正确,能快速定位错误和原因。 DRC检查从Capture 工具栏中如下图红框所示的图标中Design Rules Check进入 进入后将打开DRC窗口,有四个选项卡。分别是Design Rules Options、Elec…

区域检验管理系统(云LIS)源码

1、区域检验管理系统&#xff08;云LIS&#xff09;概述 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序&#xff0c;可协助区域内所有临床实验室相互协调并完成日常检验工作&#xff0c;对区域内的检验数据进行集中管理和共享&#xff0c;通过对质量控制的管理&am…

OrCAD创建原理图库

OrCAD创建原理图库 概述常规器件建库方法大封装器件建库基于pinout表格创建原理图库导入方法&#xff1a; 通过fsp软件导入fpga原理图库 概述 原理图库是硬件设计的基本工作&#xff0c;每个新人都要先学会建库&#xff0c;才能开始画图&#xff0c;本文主要介绍几种常用的建库…

5.2 中心极限定理

学习目标&#xff1a; 要学习中心极限定理&#xff0c;我会采取以下几个步骤&#xff1a; 学习基本概念&#xff1a;了解什么是随机变量、样本、总体、概率密度函数等基本概念&#xff0c;为学习中心极限定理打下基础&#xff1b;学习正态分布&#xff1a;中心极限定理的核心…

vue.ts规范

Vue.js是一个非常流行的前端框架&#xff0c;支持使用TypeScript增加应用程序的类型安全性、可读性和可维护性。使用Vue.js和TypeScript进行混合编程需要一些额外的工作&#xff0c;今天我来为大家介绍一些Vue.js和TypeScript混合编程的最佳实践。 1.安装TypeScript和Vue.js类型…

TexMaker(Latex编辑器)软件的“文献引用”操作:Xelatex方式运行的操作方法

一、说明 1. 针对问题 本文主要讲解使用TexMaker进行**.bib的方法**的文献引用时&#xff0c;如何使用Xelatexpdf的方式完成文献引用。某些文章强调使用PDFlatex进行编译&#xff0c;但有时候会因为论文模板不同&#xff0c;无法运行padflatexPDF。所以&#xff0c;这里给出xe…

C# 屏幕截图

C# 屏幕截图 c#实现屏幕截图 Graphics 类的CopyFromScreen方法可以拿到整个屏幕的截图&#xff0c;屏幕截图的实现主要就是用到了他 思路是首先将整个屏幕的图像截取下来&#xff0c;然后作为一个窗体的背景显示给用户&#xff0c;由用户选择要截取的区域 后&#xff0c;保存图…

移动版OpenAI,手机的杀手还是救星?

AI登陆手机&#xff0c;难度因人而异。 原本小编还以为「2023年是属于元宇宙的一年」&#xff0c;实在没想到以ChatGPT为代表的AI技术能在这么短的时间内抢走元宇宙的风头&#xff0c;成为2023年的技术关键词。从OpenAI到搜索引擎、从绘图工具到游戏公司&#xff0c;几乎所有「…

2. VBA Excel宏

在本章中&#xff0c;我们来学习如何逐步编写一个简单的宏。 第1步 - 首先&#xff0c;在Excel 2016中启用“开发者”菜单。要完成这个设置&#xff0c;请点击左上角菜单&#xff1a;文件 -> 选项。如下图所示 - 第2步 - 点击“自定义功能区”选项卡并选中“开发工具”。然…

【uniapp】sigmob广告加载失败:-5005、500422没有imei的解决办法(原创可用)

问题 最近打算将开发的uniapp应用对接uni-ad广告中去&#xff0c;在对接sigmob的时候出现了以下问题&#xff1a;①错误码-5005&#xff0c;查询了以下官方文档&#xff0c;发现是说我频繁调用&#xff0c;可是并没有&#xff0c;我是在真机上测试的没成功就没在弄了&#xff…

pyest+appium实现APP自动化测试,思路全总结在这里

目录 01、appium环境搭建 2、搭建pythonpytestappium环境 3、安装pycharm搭建项目编写脚本 4、执行测试 绵薄之力 01、appium环境搭建 安装nodejs http://nodejs.cn/ 为什么要安装nodejs&#xff1f; 因为appium这个工具的服务端是由nodejs语言开发的 安装jdk&#xf…

Nginx+Tomcat负载均衡、动静分离

1.Tomcat多实例部署 Tomcat的多实例部署简单的讲就是基于端口的虚拟主机设置 步骤一&#xff1a;安装jdk (1&#xff09;关闭防火墙和selinux&#xff0c;防止其对安装过程的干扰 &#xff08;2&#xff09;将准备好的软件包拖入/opt目录下&#xff0c;进行安装 #某rpm包尚未…

“C语言之美:结构体、联合体和枚举的魔法“

目录 结构体 联合体 枚举 结构体 结构体是一种用户定义的数据类型&#xff0c;它允许我们将不同类型的数据组合在一起&#xff0c;形成一个单独的实体。结构体由多个元素&#xff08;也称为成员&#xff09;组成&#xff0c;并且每个元素可以是不同的数据类型&#xff0c;例…