STL :双端队列容器 Deque

news/2024/11/24 1:47:30/

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…