STL :双端队列容器 Deque

news2024/12/29 10:53: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.coloradmin.cn/o/429838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TiDB实战篇-TiDB配置

简介 熟系TiDB的配置相关。 TiDB的大体参数 系统配置对应的是TiDB-Server,PD和TiKV和TiDB-Server基本在集群配置里面配置。 系统配置 系统变量 | PingCAP 文档中心 集群配置 PD 配置文件描述 | PingCAP 文档中心 配置的存储位置 系统配置存储在TiKV中的&#xff0c;集…

如何免费恢复电脑上误删除的视频

虽然我们现在可以在单个硬盘驱动器上存储无数大型视频文件是件好事&#xff0c;但这也意味着单个用户错误或硬件/软件故障可能会立即抹去数小时的记忆&#xff0c;而没有任何明显的方法可以恢复它们。在本文中&#xff0c;我们提供了一个快速的分步视频恢复指南&#xff0c;以帮…

【音视频】利用ffmpeg实现:音视频的提取,rtmp推流等

目录 可列出电脑的设备 音频桌面视频&#xff0c;存mp4 录声音 推流到服务器 音频桌面视频&#xff0c;推流到服务器 音频笔记本摄像头&#xff0c;推流到服务器 参考资料 可列出电脑的设备 输入下面的语句即可列出电脑的设备 ffmpeg -list_devices true -f dshow -i dum…

(链表)相交链表(双指针法)

文章目录前言&#xff1a;问题描述&#xff1a;问题解析&#xff1a;代码实现&#xff1a;总结&#xff1a;前言&#xff1a; 此篇是关于链表的经典练习题。 问题描述&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节…

【测试开发篇9】Junit框架

目录 一、认识Junit框架 Junit和Selenium的关系是什么 导入Junit框架common-io包 二、Junit框架的使用 2.1Junit有哪些常用注解 2.1.1Test注解 2.1.2BeforeEach 2.1.3BeforeAll 2.1.4AfterAll 2.1.5AfterEach 2.2Junit的断言 Assertions.assertEquals(期待值&#…

小白推荐|使用git建立自己的代码仓库

1 git 1.1 什么是git 版本控制工具&#xff0c;用于团队协作与项目管理 1.2 git 安装教程 step1&#xff1a;进入git下载官网Git for Windows step2&#xff1a;点击Download step3&#xff1a;打开下载好的文件&#xff0c;按照下面图片一步一步安装 剩下的一直点Next就完…

ansible-playbook task 指定位置执行

文章目录执行顺序指定执行--tags–start-at--skip-tags--step混合执行顺序 1.检查play中是否存在pre_tasks定义&#xff0c;存在的话则顺序执行pre_tasks中定义的所有tasks 2.如果存在pre_tasks定义&#xff0c;则检查是否存在触发handler&#xff0c;如存在则顺序执行相关触发…

Java中的锁是什么意思,有哪些分类?

Java锁&#xff08;Java Locks&#xff09;是Java编程语言中用于实现多线程同步和互斥的机制。在并发编程中&#xff0c;多线程同时访问共享资源可能导致竞态条件&#xff08;Race Condition&#xff09;和其他并发问题&#xff0c;Java锁提供了一种控制多线程并发访问的方式&a…

FluxMQ—物联网高性能MQTT网关

FluxMQ—物联网高性能MQTT网关 随着物联网技术的快速发展&#xff0c;人们越来越意识到实时、可靠、安全的数据传输对于智能化的生产与生活的重要性。因此&#xff0c;市场对于高性能的物联网数据传输解决方案有着强烈的需求。FluxMQ正是为满足这一需求而诞生的一款高性能、可…

Adobe 观察 |最低工资标准来了,学会这几招,让加薪更简单

最新调整后的全国各地区最低工资标准情况来了&#xff01; 人力资源和社会保障部新发布的数据显示&#xff0c;截至今年4月1日&#xff0c;共有15个地区第一档月最低工资标准在2000元及以上&#xff0c;分别是上海&#xff08;2590元&#xff09;、深圳&#xff08;2360元&…

Pandas 2.0发布——更快的速度更低的内存占用

【重磅】Pandas 2.0发布&#xff01;更快的速度更低的内存占用&#xff01; Pandas 是一个用于操作数据的 Python 库&#xff0c;在 Python 开发人员中非常流行。尤其在数据科学和机器学习领域中&#xff0c;Pandas已经成为不可或缺的基础库。 4月3日&#xff0c;Pandas 2.0正…

ESLint 与 Prettier 配合解决代码格式问题

可以了解下Prettier&#xff0c;官网&#xff1a;Prettier 中文网 Prettier 是一个“有态度”的代码格式化工具 Prettier常见的一些配置&#xff1a; tabWidth&#xff1a;指定缩进宽度&#xff0c;默认为 2&#xff0c;建议设置为 4&#xff1b;printWidth&#xff1a;指定代…

MyBatis核心配置文件详解

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><environments default"…

页面布局基础知识

一、布局方案 1、什么是静态布局 概念 静态布局&#xff0c;也称为固定布局&#xff0c;是一种传统网页设计。页面布局使用绝对长度单位&#xff0c;采用固定宽度。忽略浏览器实际&#xff0c;网页布局始终按照最初写代码时的布局来显示。 优点&#xff1a;简单 缺点&#xf…

可视化图表组件体系的构建(内附全套开源文件)

Part01————————前言 EasyV作为一个低代码数字孪生可视化搭建平台&#xff0c;其图表组件作为可视化项目建设的基础构成发挥着重要的作用。 经过多年可视化项目交付经验&#xff0c;沉淀了一套形态多样、样式精细、高配置度的数据可视化图表。 Figma开源文件社区获取入…

【MySQL | 进阶篇】05、MySQL 视图、触发器讲解

目录 一、视图 1.1 介绍 1.2 语法 1.2.1 演示示例 1.3 检查选项 1.3.1 CASCADED 级联 1.3.2 LOCAL 本地 1.3.3 示例演示 1.4 视图的更新 1.4.1 示例演示 1.5 视图作用 1.6 案例 二、触发器 2.1 介绍 2.2 语法 2.3 案例 2.3.1 插入数据触发器 2.3.2 修改数据…

国内版 ChatGPT值不值得上手----PlumGPT测评

前言&#xff1a;什么是PlumGPT&#xff08;国内版的chatgpt&#xff09;&#xff0c;PlumGPT国内版ChatGPT是一个基于GPT-3.5算法的人工智能聊天机器人&#xff0c;能够通过自然语言与用户交互&#xff0c;提供各种服务和解答各种问题。本文将对PlumGPT国内版ChatGPT进行全面测…

NetSuite GPT的辅助编程实践

作为GPT综合症的一种表现&#xff0c;我们今朝来探究下GPT会不会抢了我们SuiteScript的编程饭碗&#xff0c;以及如何与之相处。以下内容来自我个人的实践总结。 我们假设一个功能场景&#xff1a; 为了让用户能够在报价单上实现“一键多行”功能&#xff0c;也就是在报价中可…

【精华】AIGC之文生视频及实践应用

AIGC之文生视频及实践应用 &#xff08;一&#xff09;序言 从 Stable Diffusion 到 Midjourney&#xff0c;再到 DALLE-2&#xff0c;文生图模型已经变得非常流行&#xff0c;并被更广泛的受众使用。随着对多模态模型的不断拓展以及生成式 AI 的研究&#xff0c;业内近期的工…

78-Linux_tcp服务器客户端编程流程

tcp服务器客户端编程流程一.c/s模型1.什么是c/s模型?2.c/s模型的逻辑二.TCP服务器端和TCP客户端的工作流程1.流程2.TCP三次握手3.TCP四次挥手一.c/s模型 1.什么是c/s模型? 答:(c/s)模型即(客户端/服务器端)模型 所有的客户都通过服务器端访问所需资源. 模型如图所示: 2.c…