STL源码剖析之:deque、stack、queue

本文详细剖析了STL中deque的实现原理,包括其独特的内存管理机制和元素插入策略,同时介绍了如何基于deque实现stack和queue数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.deque

STL源码剖析——deque的实现原理和使用方法详解
STL源码剖析】第四章 序列式容器 之 deque底层实现
这个有点厉害,不过没看完。。STL中的deque及源码实现 std::deque
核心为内存管理,对不连续的缓冲区的管理。
在这里插入图片描述
deque里面有一个比较有意思的函数insert,表示向某一个位置插入元素,然后insert的处理是追求元素个数移动最少:

  • 该位置与最前面一个buffer的cur位置相同吗?相同则调用push_front;
  • 该位置与最后面一个buffer的cur位置相同吗?相同则调用push_back;
  • 否则说明插入的位置在中间,则计算该位置到起点的元素个数以及该位置到终点的元素个数,如果到起点的元素个数少,则将前面的元素搬移;如果到终点的元素个数少,则将后面的元素往后移。

2.stack

stack是只允许在一端进行插入和删除的数据结构,如果以deque为基础,可以很简单的实现stack。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pushpop操作就是在deque的基础上完成的,直接调用的dequepush_back()pop_back()

3.queue

队列是种FIFO的数据结构。
在这里插入图片描述
在这里插入图片描述
push调用的是dequepush_back(),在尾端插入;
pop调用的是dequepop_front(),在队头删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值