C++:deque的底层原理

news2024/11/17 16:01:31

一、deque是是双端队列。 

deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。


二、deque的接口就像list和vector的合体

deque可以像 list 一样使用头插(push_front头删(pop_front 也可以像 vector 一样使用下标访问 [] 数据。


三、deque类似于一个动态的二维数组。

deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际其底层结构如下图所示:


 四、deque的缺陷

        deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其
是否移动到某段小空间的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实
际中,需要线性结构时,大多数情况下优先考虑vector和list,deque的应用并不多,而目前能看
到的一个应用就是,STL用其作为stack和queue的底层数据结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162652.html

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

相关文章

Docker自定义构建镜像dockerfile和使用数据卷

Docker自定义构建镜像dockerfile和使用数据卷 DockerFile Dockerfile 是一个文本文件,包含了一系列用于构建 Docker 镜像 的指令和配置信息。通过编写 Dockerfile ,用户可以定义镜像的构建过程,包括基础镜像、运行命令、设置环境变量、暴露…

38.重复的子字符串

方法1: class Solution {public boolean repeatedSubstringPattern(String s) {if (s.equals("")) return false;String s2(ss).substring(1,(ss).length()-1);//去掉首尾字符return s2.contains(s);//判断是否包含s} } class Solution(object):def rep…

Leetcode 相交链表

一图胜千言,java 代码如下: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListN…

Python自动化测试之unittest框架

一、什么是框架 框架是由大佬开发或者专业的研发团队研发的技术骨架,框架是一个半成品,框架是对常用的功能,基础的代码进行封装的一个工具,这个工具对外提供了一些API,其他的开发者只需要调用框架的接口即可&#xff…

网络安全法中,个人信息保护的措施和原则有哪些?

《中华人民共和国网络安全法》中关于个人信息保护的规定强调了几项基本原则和措施,以确保个人信息的安全。以下是其中的一些要点: 原则 合法性:个人信息的收集和使用必须符合法律规定。 正当性:信息收集和使用的目的是正当的&…

数据的基本统计描述

基本操作 首先导入鸢尾花数据集用于分析 import numpy as np from sklearn.datasets import load_iris iris_dataload_iris() iris_data 查看数据维度 iris_data.data.shape 获取第一组数据 iris_data.data[0] 获取第一个维度所有取值,作为一维向量 iris_…

【高分系列卫星简介——高分五号卫星(GF-5)】

高分五号卫星(GF-5) 高分五号(GF-5)卫星是中国高分辨率对地观测系统重大专项系列中的一颗重要卫星,主要承担着遥感、测绘等任务。以下是对高分五号卫星的详细介绍: 一、基本信息 国籍:中国研…

内容生态短缺,Rokid AR眼镜面临市场淘汰赛

AR是未来,但在技术路径难突破、生态系统难建设,且巨头纷纷下场的背景下,Rokid能坚持到黎明吗? 转载:科技新知 原创 作者丨王思原 编辑丨蕨影 苹果Vision Pro的成功量产和发售,以及热门游戏《黑神话》等在A…

解锁微软录屏工具:2024 开启屏幕录制新时代

现在快节奏的生活环境,录屏工具已成为不可或缺的记录利器,其应用范围广泛。若你正对windows自带录屏功能充满好奇,渴望掌握其操作方法,或是寻求更多专业、便捷的录屏软件选项,那么就请继续阅读吧。 1.福昕录屏大师 链…

清华大学开源视频转文本模型——CogVLM2-Llama3-Caption

通常情况下,大多数视频数据并不附带相应的描述性文本,因此有必要将视频数据转换为文本描述,为文本到视频模型提供必要的训练数据。 CogVLM2-Caption 是一个视频字幕模型,用于为 CogVideoX 模型生成训练数据。 文件 使用 import i…

应用层 II(文件传输协议FTP)【★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、文件传输协议(FTP) 文件传送协议 FTP(File Transfer Protocol)是互联网上使用得最广泛的文件传送协议。FTP 提…

14年408-计算机网络

第一题: 解析:OSI体系结构 OSI由下至上依次是:物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题: 解析:数据链路层-交换机的自学习和帧转发 主机a1向交换…

零基础学Axios

Axios官网:Axios官网 想用Axios前需要在项目中安装axios,安装方式如下: 下列是axios请去方式,本文主要讲解post和get请求,其他请求和这两种请求方法相同。 1 get请求 1.1 不带请求参数 前端 后端 1.2 带请求参数 前端 写法…

动态切换数据库连接方案

文章目录 引言I 案例:手动切换数据库配置存储数据库配置信息书写切换脚本II 知识扩展使用sed命令替换文件内容激活环境配置文件引言 需求: 查询SQL Server数据库的时候可以根据实际情况分配服务器来提供服务,大大提高服务速度和优化性能,完成负载均衡。 方案:推荐从数据库…

菱形继承的类对父类的初始化、组合、多态、多态的原理等的介绍

文章目录 前言一、菱形继承的类对父类的初始化二、组合三、 多态1. 构成多态2. 虚函数3. 虚函数的重写4. 虚函数重写的两个例外1. 协变2. 析构函数的重写 5. C11 final 和 override1. final2. override 6. 设计不想被继承的类7. 重载、覆盖(重写)、 隐藏…

基于数据挖掘的航空客户满意度分析预测系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 航空公司致力于提供多样化的服务以满足乘客需求,包括但不限于提供免费无线网络、免费食物饮品、提供网上预约服务、飞机出口位置、座椅舒适度、卫生状况等,并希望以此提升乘…

Linux系统CentOS下挂载磁盘

1. 挂载磁盘步骤总结如下 1. 对磁盘进行分区 2. 对磁盘进行格式化 3. 将磁盘挂载到对应目录 4. 设置开机自动挂载磁盘 2. 对磁盘进行分区 2.1 查看系统设备信息 lsblk指令显示所有块设备信息:显示系统中所有的块设备信息,包括磁盘和分区 lsblk 2…

Mapbox封装图形绘制工具 线,圆,polygon,删除,点 mapbox-gl-draw-circle mapbox-gl-draw

使用插件,安装 npm install mapbox-gl-draw-circle //绘制圆 npm install mapbox/mapbox-gl-draw //绘制点线面删除相关API地址:https://github.com/mohong/mapbox-gl-draw-circle https://github.com/mapbox/mapbox-gl-draw/blob/main/docs/API.md…

Unity 热更新(HybridCLR+Addressable)-设置打包路径和加载路径、打开Hosting服务、打包

四、设置打包和加载路径 五、打开Hosting服务 六、打包 打包完成后路径在Assets同级目录下的ServerData 但是目前没有资源文件对比 修改上面设置后再次打包 里面多了哈希和JSON文件,这俩个就是用于资源对比

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目 用visual studio2022编译,最低net只能用6.0版本的,并且execute-assembly不支持 我想使用4.x版本进行编译,因为visual studio不支持,那么使用命令行进行编译 因为要用…