当前位置: 首页 > article >正文

C++ deque(1)

1.deque介绍

deque的扩容不像vector那样麻烦 直接新开一个buffer 不用重新开空间再把数据全部移过去

deque本质上是一个指针数组和vector<vector>不一样,vector<vector>本质上是一个vector对象数组!并且vector<vector>的buffer是不一样大的 而deque的每个buffer大小是固定的

指针数组满了之后直接扩容就可以了,并且代价很低基本可以忽略不记(只用拷贝指针数组的全部指针就可以了)

数据插入的时候 优先往中间插入 因为这样你尾插和头插就不用去挪动数据了! 

2.deque和vector与list的对比

相比vector

优点:

1.极大的缓解了扩容问题,头插 头删问题

缺点

1.但是[ ]不够极致 deque要计算在哪个buffer的第几个(计算方法如下)

相比list

优点:

1.可以支持下表随机访问

2.cpu高速缓存 效率不错 

缺点:

1.头尾插入删除都不错 但是中间插入删除呢?(很拉跨)

这个时候就很麻烦

有两种方式

(1)挪动数据  代价很大不用说了(并且只能挪插入的那个buffer 不能挪其它buffer)

(2)扩容 对当前buffer扩容 但是不建议这么弄 包括库里面也不是这样实现的

这(buffer大小)会影响[]的使用(看上图)[]效率会进一步降低

3.deque的优势和不足

优势:

deque有一个最大的优势 就是非常适合高频的头插头删和尾插尾删

很适合用来适配栈和队列的默认容器

不足:

非常不适合中间插入和删除

方括号用的不多的时候可以用deque

deque的实现是非常复杂的 比vector和list复杂很多

这里只是一个简单介绍


http://www.kler.cn/a/526990.html

相关文章:

  • 表格结构标签
  • [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器
  • DeepSeek介绍
  • FastExcel使用详解
  • 记录一次Sqoop从MySQL导入数据到Hive问题的排查经过
  • Pandas进行MongoDB数据库CRUD
  • 元旦和春节取名的历史变迁
  • ESP32-S3模组上跑通esp32-camera(38)
  • 嵌入式系统|DMA和SPI
  • GitHub上传文件异常 显示this file is hidden
  • 《苍穹外卖》项目学习记录-Day7缓存套餐
  • 1 HDFS
  • 深入解析 COUNT(DISTINCT) OVER(ORDER BY):原理、问题与高效替代方案
  • Visual Studio使用GitHub Copilot提高.NET开发工作效率
  • Day50:字典的合并
  • nodejs:express + js-mdict 网页查询英汉词典
  • 算法基础——存储
  • 智能小区物业管理系统推动数字化转型与提升用户居住体验
  • 实测数据处理(Wk算法处理)——SAR成像算法系列(十二)
  • 如何让一个用户具备创建审批流程的权限
  • OpticStudio 中的全息图建模 – 反射形式
  • 在Windows中 基于Oracle GoldenGate (OGG)进行MySQL-gt;MySQL数据库同步配置(超详细)_ogg-15146
  • 【MyDB】4-VersionManager 之 4-VM的实现
  • EtherCAT主站IGH-- 24 -- IGH之fsm_slave_config.h/c文件解析
  • CSS 值和单位详解:从基础到实战
  • NX/UG二次开发—CAM—快速查找程序参数名称