deque底层数据结构以及和queue的异同

deque与queue底层结构及异同解析


deque(双端队列)是一种具有高效两端插入和删除操作的数据结构,常见于C++标准库(STL)和其他编程语言中。它的底层实现结合了数组和链表的优势,既支持高效的随机访问,又能在两端快速插入/删除元素。

底层数据结构原理

deque 的核心思想是分段连续存储

  • 使用多个固定大小的(通常是数组)存储元素。
  • 这些块通过一个中控器(通常是指针数组)连接,形成逻辑上的连续序列。

在这里插入图片描述

关键组成部分

  1. 中控器(Map)

    • 一个动态分配的数组,每个元素是指向数据块的指针。
    • 当需要扩展容量时,中控器会重新分配并调整指针。
  2. 数据块(Buffer)

    • 固定大小的连续内存块(数组),存储实际元素。
    • 每个块的大小通常是编译时确定的(如C++ STL中默认大小为512字节)。
  3. 迭代器(Iterator)

    • 智能指针,封装了当前元素在哪个块、块内的偏移量等信息。
    • 通过重载运算符(如 ++, --, [])实现透明的随机访问。

操作效率

操作 时间复杂度 说明
两端插入/删除 O(1) 仅需调整中控器和块内指针
随机访问 O(1) 通过中控器和块内偏移量直接计算
中间插入/删除 O(n) 需要移动元素
内存扩展 O(n) 重新分配中控器并复制指针

与其他容器的对比

容器 随机访问 两端插入/删除 中间插入/删除 内存布局
vector O(1) 尾部O(1)*</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值