news 2026/4/16 16:06:47

STL:deque

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STL:deque

deque 是什么?

双端队列(两头都能高效插入/删除)

deque<int> d; d.push_back(1); d.push_front(2);

deque 和 vector 的本质区别

vector一整块连续内存
deque分段连续(块状结构)

deque 底层结构

deque不是一块内存,而是:

中控数组(map)
↓ ↓ ↓ ↓ ↓
[块][块][块][块]

中控数组(map)

存的是“指针”

map: [ ptr ][ ptr ][ ptr ]
↓ ↓
block block

每个 block(缓冲区)

每个 block 是一段连续内存(比如 512 字节)

block1: [1 2 3]
block2: [4 5 6]

总体结构:

map → 多个连续小块 → 拼起来像连续

为什么要这样设计?

解决 vector 的一个痛点:

vector 头插很慢

v.insert(v.begin(), 10); // O(n)

deque 两头都快

因为:

头部还有空间 直接插

不够 新开一个 block

不需要整体搬家

deque 的时间复杂度

操作复杂度
随机访问O(1)
尾插O(1)
头插O(1)
中间插入O(n)

deque 的迭代器

deque迭代器不是普通指针

因为:

数据不是一整块连续内存

迭代器内部结构

struct deque_iterator { T* cur; // 当前元素 T* first; // 当前块起始 T* last; // 当前块结束 T** node; // 指向 map 中的块指针 };

移动时:

++it:
如果到块末尾 → 跳到下一个 block

deque vs vector

对比vectordeque
内存完全连续分段连续
随机访问O(1)O(1)
头插
尾插
扩容整体搬家分块扩展
cache非常好略差

deque 的优缺点

优点

两端插入删除 O(1)

不需要整体扩容搬家

支持随机访问

缺点

结构复杂

cache 不如 vector

迭代器复杂(容易失效)

iterator 失效

deque 比较“中间态”:

插入可能导致 map 扩容 → 迭代器失效

d.push_back(10); // 可能失效

中间插入 → 基本全失效

deque:比 vector 稳一点,但不如 list 稳

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 16:04:00

PDF-Extract-Kit-1.0与SpringBoot集成开发实战

PDF-Extract-Kit-1.0与SpringBoot集成开发实战 1. 引言 你是不是经常遇到需要从PDF文档中提取内容的需求&#xff1f;比如要从一堆合同里找出关键条款&#xff0c;或者从技术文档中提取表格数据&#xff0c;再或者把PDF转换成可编辑的格式。传统的方法要么效果不好&#xff0…

作者头像 李华
网站建设 2026/4/16 16:03:44

用代码当“尺子”:HarmonyOS 定位 API 测距入门小记

前言用手机测量距离这件事&#xff0c;很多人第一个想到的是打开地图 App&#xff0c;长按起点再长按终点&#xff0c;等系统算出一条蓝线。这当然可以&#xff0c;但如果只想简单测一下“我离某个地方大概多远”&#xff0c;地图的操作链条显得有点长。那能不能自己动手做一个…

作者头像 李华
网站建设 2026/4/16 16:03:32

GetQzonehistory:如何安全备份你的QQ空间数字记忆

GetQzonehistory&#xff1a;如何安全备份你的QQ空间数字记忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在社交媒体数据管理中&#xff0c;我们常常面临一个现实问题&#xff1a;平…

作者头像 李华
网站建设 2026/4/16 16:02:39

3大核心功能解析:CREST如何帮你彻底解决分子构象搜索难题

3大核心功能解析&#xff1a;CREST如何帮你彻底解决分子构象搜索难题 【免费下载链接】crest CREST - A program for the automated exploration of low-energy molecular chemical space. 项目地址: https://gitcode.com/gh_mirrors/crest/crest 你是否曾为寻找分子的稳…

作者头像 李华
网站建设 2026/4/16 16:02:31

AI专著生成魔法揭秘:高效工具推荐,极大提升专著撰写效率

学术专著写作难题与AI工具解决方案 对大多数研究人员来说&#xff0c;撰写学术专著的最大挑战无疑是“有限的时间和精力”与“无限的写作需求”之间的矛盾。专著的创作过程通常需要耗费3到5年&#xff0c;甚至更久的时间&#xff0c;而研究者们还要面对教学、科研项目、学术交…

作者头像 李华
网站建设 2026/4/16 16:00:12

2025_NIPS_Solver-Informed RL: Grounding Large Language Models for Authentic Optimization Modeling

文章主要内容总结 该研究聚焦于解决大语言模型(LLMs)在生成优化模型时存在的错误和幻觉问题,提出了Solver-Informed Reinforcement Learning(SIRL)框架——一种基于可验证奖励的强化学习方法,旨在提升LLMs生成准确、可执行优化模型的能力。 核心流程包括: 数据合成:通…

作者头像 李华