deque(简单介绍一下)

news2024/11/28 9:32:51

deque的基本情况:

简单的来说deque是一个双头队列。且两边的尺寸可以动态收缩或者扩张。

其底层实现相当复杂,而且效率并不高。大多数时候都不会使用。

deque诞生的原因是vector和list的优缺点不可分割。

正好复习一下vector和list的优缺点。

vector的优点:支持随机访问;尾插,尾删很方便;高速缓存命中率高。

vector的缺点:不支持头插或者中间插入;扩容具备一定的性能消耗,以及空间浪费。

list的优点:任意位置插入删除数据只需要O(1)复杂度;按需申请释放空间,没有损耗。

list的缺点:不支持随机访问,高速缓存命中率低。

对比两者的优缺点,发现他们的缺点正是为了他们的优点诞生的,两者不可分割。deque就是针对两者的缺点设计出来的,所以性能被牺牲了。

deque的底层大概是这样的结构:

如何满足随机访问?

要访问的下标,减去第一个数组具有的元素个数,然后/10,就能知道在第几个空间了。%10就能知道在第几个位置。

deque的优点:

1.头插和尾插效率不错

2.支持随机访问

3.高速缓存命中率高

4.扩容代价小

deque的缺点

1.中部插入删除效率不行,(要么需要挪动数据,要么支持每个开辟的空间大小不一定相同,这样的话,中控数组还要记录每个空间有多少个元素,因为要支持随机访问)

2.虽然支持随机访问,但效率相对于vector而言还有差距。频繁随机访问时要小心。

以排序为例(测试在release下):

用deque存数据,进行排序,和vector存数据(和deque中的内容一样),进行排序。10000以内没什么区别,之后的每个数量级,deque花费的时间都是vector的2倍左右。

如果将deque的数据拷贝进vector,进行排序,排序完再将数据拷贝给deque(用assign拷贝回deque),和直接对vector中的数据排序所花费的时间,进行比较,deque花费的时间大概是vector的1.4倍左右。

所以deque适合在大量头尾存储删除数据的时候使用,比如stack和queue,栈和队列使用deque比使用vector/list更合适。

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

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

相关文章

手机抓包fiddler配置及使用教程

本文基于Fiddler4讲解基本使用 fiddler抓包原理 注意:Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的 程序。不过如果Fiddler非正常退出&…

学校热水供应系统方案

学校热水供应系统是现代化校园建设的重要组成部分。一套高效、可靠、安全、环保的热水供应系统,不仅能够满足学生、教职工的日常生活需求,也能提高学校形象和竞争力。 在设计学校热水供应系统方案时,需要考虑以下几个方面: 一、热…

【计算机网络复习之路】运输层(谢希仁第八版)万字详解 主打基础

运输层是OSI七层模型中最重要最关键的一层,是唯一负责总体数据传输和控制的一层。运输层要达到两个主要目的:第一,提供可靠的端到端的通信(“端到端的通信” 是应用进程之间的通信);第二,向会话…

【css】box-sizing属性

box-sizing 是一个 CSS 属性,用于指定元素的总宽度和高度的计算方式。它影响内容框的大小,并可以包括或排除元素的填充、边框和外边距。 box-sizing 属性接受两个值: content-box:这是默认值。它指定元素的宽度和高度只包括内容区…

培训班出来拿17K,入职后8天就被裁了....

最近翻了一些网站的招聘信息,把一线大厂和大型互联网公司看了个遍,发现市场还是挺火热的,虽说铜三铁四,但是软件测试岗位并没有削减多少,建议大家有空还是多关注和多投简历,不要闭门造车,错过好…

电脑重装系统后无法开机是什么原因导致的

电脑重装系统是一种常见的解决问题和提升性能的方法,但有时候重装系统后可能会遇到无法开机的问题。本文将介绍一些常见原因和解决方法,帮助您解决电脑重装系统后无法开机的困扰。 工具/原料: 系统版本:windows7系统 品牌型号&…

HNU-操作系统OS-作业3(26-31章)

OS_homework_3 这份文件是OS_homework_3 by计科210X wolf 202108010XXX 文档设置了目录,可以通过目录快速跳转至答案部分。 第26章 运行该程序wolf/OS-homework/threads-intro/x86.py 通过README可知一些重要的标识符如下 -p:指定程序 -t:线程数 -i:指定每执行i个指令…

BT8918D----GPIO模块

0 Preface/Foreword 1 宏定义和数据结构 1.1 gpio_t typedef struct { psfr_t sfr; //GPIO SFR ADDR u8 num; u8 type; //type 1,高压IO,没有300R的强上下拉电阻。 type 0, 普通IO, 有内部300R上下拉电阻。 } gpio_t; 1.…

LeetCode - 18 四数之和

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 18. 四数之和 - 力扣(LeetCode) 题目描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], n…

selenium.chrome怎么写扩展拦截或转发请求?

Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口的返回,或者拦截和转发请求,今天就来实现这个功能。 代码已开源: https:/…

Spring AOP(面向切面编程)详解

文章目录 前言AOP 概述AOP的基本概念AOP 应用场景AOP 常用的接口 Spring AOP 实现方式基于XML的配置基于注解的配置 Spring AOP 的使用一、Spring 的 API 接口实现AOP二、自定义类实现AOP三、注解实现AOP 模拟实现 Spring AOP 前言 Spring 提供了功能强大IOC、AOP等功能&#…

文心一言 VS 讯飞星火 VS chatgpt (36)-- 算法导论5.3 6题

六、请解释如何实现算法 PERMUTE-BY-SORTING,以处理两个或更多优先级相同的情形。也就是说,即使有两个或更多优先级相同,你的算法也应该产生一个均匀随机排列。 文心一言: 算法 PERMUTE-BY-SORTING 是一种基于排序的随机排列算法…

【第二章:物理层】

目录 知识框架No.0 : 引言No.1 :通信基础一、基本概念二、两个公式lim求极限1、失真(失去真实性) 三、编码和调制四、数据交换方式 No.2 :传输介质一、导向型介质二、非导向型介质 No.3 :物理层设备一、中继器二、集线…

selenium:元素定位之xpath、css

元素定位是在做UI自动化测试中最重要的一环,要牢牢掌握定位的方法,才能更有效率的进行UI自动化测试。 常见的元素定位方式: idnametag_nameclass_namelink_textpartial_link_textxpathcss 其中id,name是具有唯一性的&#xff0…

高考攀升小红书热榜!互动量破千万,品牌如何毕业季营销?

光影间,又是一年毕业季,弹指之间,那些青葱岁月如同白驹过隙般悄然从指缝溜走。近期,一年一度的高考、大学毕业又来袭,登上各大社媒平台热搜,成为热门话题;本期,随小编一起运用小红书…

【C++】智能指针 学习总结 |std::shared_ptr |std::unique_ptr | std::weak_ptr

文章目录 前言一、智能指针介绍二、普通指针和智能指针的比较案例三、std::shared_ptr四、std::unique_ptr五、std::weak_ptr六、std::shared_ptr |std::unique_ptr | std::weak_ptr三大智能指针的区别 前言 参考答案:chatgpt 一、智能指针介绍 智能指针是C的一种…

chatgpt赋能python:Python循环执行一个函数:简单而高效的代码实现

Python循环执行一个函数:简单而高效的代码实现 Python是一种高级编程语言,非常流行,不仅因为它易于学习和使用,而且因为它的灵活性。Python编程语言有很多特性,其中包括使用函数模块化编程,这在大型项目中…

图文验证码怎么测试及自动化测试怎么解决验证码问题?

目录 前言 首先,来简单认识下验证码 1、验证码的由来和作用 2、验证码的存储 3、验证码的原理 如何测试验证码? 1、手动测试 2、自动化测试 总结: 前言 在对安全性有要求的软件(系统)中都存在验证码&#xf…

高级查询 — 连接查询

关于northwind 示例数据库 查询数据库中的表 show tables;查询表的表属性 desc xxx(表名);连接查询 1.概述 若一个查询同时涉及两个及以上的表,则称之为连接查询。也可以叫做多表查询。使用join关键字进行多表连接。 2.分类(按功能) 内连…

二阶低通滤波器(通用滤波器)

一阶低通滤波器的详细算法介绍请参看下面文章: 一阶RC算法公式和梯形图代码 PLC信号处理系列之一阶低通(RC)滤波器算法_反馈信号低通滤波器_RXXW_Dor的博客-CSDN博客1、先看看RC滤波的优缺点 优点:采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点; 1…