【CPP】双端队列简介(deque)

简介: 【CPP】双端队列简介(deque)

简介:双端队列(deque)

1.概述

双端队列:是一种顺序表和顺序表的结合数据结构,不是队列。

它提供顺序表的[]下标访问和链表的中间头部的较高效率插入删除操作。

2.特点

顺序表的优缺点:

优点:支持下标随机访问

缺点:头部或者中间插入删除效率低 + 扩容有消耗

链表的优缺点:

优点:任意位置插入删除效率都不错

缺点:不支持下表随机访问

双端队列优缺点:顺序表链表都沾点边,但都不够极致。

优点:

  • 既有着顺序表支持下表随机访问的功能,又有链表任意位置插入删除效率都还可以。
  • 而且头插尾插效率很好。

缺点:

  • 双端队列支持的下标随机访问性能上不如顺序表,双端队列的任意位置插入删除效率不如链表

3.底层原理

简化抽象图:

迭代器图:

因为deque优点是头尾插入删除效率很好,刚好与栈和队列相一致,因而常被用做栈和队列的默认容器。


EOF

相关文章
|
编解码 监控 C++
C++音视频编程探秘
C++音视频编程探秘
655 1
|
算法 关系型数据库 MySQL
drop、truncate 和 delete 的区别
drop、truncate 和 delete 的区别
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
757 5
|
存储 固态存储 大数据
固态硬盘和机械硬盘区别?固态硬盘和机械硬盘哪个好?
在当今数据时代,硬盘作为电脑里的存储设备在我们的生活和工作中扮演着十分重要的角色。随着存储技术的进步,市场上出现了两种主流硬盘:固态硬盘和机械硬盘。它们各有优劣,那么二者究竟有什么区别?我们又该如何选择呢?本文将和大家聊一聊固态硬盘和机械硬盘的区别,大家在选择硬盘的时候可以作为参考。
固态硬盘和机械硬盘区别?固态硬盘和机械硬盘哪个好?
|
NoSQL API Redis
最佳实践|如何使用c++开发redis module
本文将试着总结Tair用c++开发redis module中遇到的一些问题并沉淀为最佳实践,希望对redis module的使用者和开发者带来一些帮助(部分最佳实践也适用于c和其他语言)。
76978 0
|
机器学习/深度学习 算法 数据挖掘
深度学习中常用损失函数介绍
选择正确的损失函数对于训练机器学习模型非常重要。不同的损失函数适用于不同类型的问题。本文将总结一些常见的损失函数,并附有易于理解的解释、用法和示例
1256 0
深度学习中常用损失函数介绍
|
监控 安全 网络安全
深入调查研究蜜罐与蜜网
【10月更文挑战第17天】
350 0
|
Java jvm-sandbox 容器
【alibaba/jvm-sandbox#05】沙箱事件详解
alibaba/jvm-sandbox设计了完善且复杂的沙箱事件,用于实现事件探测和流程控制机制。但不建议对于同一个类、同一个方法多次增强
962 0
|
算法 前端开发 C++
C++基础知识(八:STL标准库 deque )
deque在C++的STL(Standard Template Library)中是一个非常强大的容器,它的全称是“Double-Ended Queue”,即双端队列。deque结合了数组和链表的优点,提供了在两端进行高效插入和删除操作的能力,同时保持了随机访问的特性。
482 0
|
传感器 存储 编解码
【STM32基础 CubeMX】ADC的基础使用
【STM32基础 CubeMX】ADC的基础使用
757 0