stl deque源码学习笔记

本文详细探讨deque容器的特性,包括其优化的序列访问能力、内存使用方式、与vector和list的区别,以及如何在不同场景下高效利用deque。通过分析deque的源码和性能测试,为开发者提供实用的指导。

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

1.deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector 更有效。

2.deque的size()函数是常量级的:

size_type size() const { return _M_finish - _M_start; }


3.与vector相比较,deque没有内存再分配的消耗(vector在内存不够时会调用reserve()函数增加空间,但是会涉及到内存的移动)。

4.与list相比,deque可以进行比较快速的随机访问(尽管没有vector快,但性能是可以接受的)。

5.deque 是对vector 和list 优缺点的结合,它是处于两者之间的一种容器。

最后推荐大家两篇关于deque的文章:
stl_deque.h源码分析:[url]http://blog.youkuaiyun.com/mdl13412/article/details/6647409[/url],写的非常详细。
deque的性能测试研究:[url]http://www.knowsky.com/394437.html[/url]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值