博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL之Deque
阅读量:5076 次
发布时间:2019-06-12

本文共 609 字,大约阅读时间需要 2 分钟。

vector是单向开口的连续线性空间,deque则是以中双向开口的连续线性空间。所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作。从技术的角度而言,vector当然也可以在头尾两端进行操作,但是其头部操作效率奇差、令人无法接受。

deque和vector的最大差异:

  1. deque允许于常数时间内对头端进行元素的插入或移除操作

  2. deque没有所谓容量(capacity)观念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来。换句话说,像vector那样“因旧空间不足而重新配置一块更大空间,然后复制元素,再释放旧空间”这样的事情在deque中是不会发生的。也因此,deque没有必要提供所谓的空间预留(reserved)功能。

屏幕快照 2017-04-22 下午4.04.31

屏幕快照 2017-04-22 下午4.06.07

deque是由一段一段的定量连续空间构成。一旦有必要在deque的前端或尾端增加新空间,便配置一段定量的连续空间,串接在整个deque的头端或尾端。 deque的最大任务,便是在这些分段的定量连续空间上,维护其整体连续的假象,并提供随机存取的接口。避开了“重新配置、复制、释放”的轮回,代价则是复杂的迭代器架构。

屏幕快照 2017-04-22 下午4.10.56


vector和deque的区别

屏幕快照 2017-04-22 下午4.13.37


构造函数

屏幕快照 2017-04-22 下午4.17.12


与vector不同的操作:

屏幕快照 2017-04-22 下午4.18.46

deque的操作函数

屏幕快照 2017-04-22 下午4.21.53
屏幕快照 2017-04-22 下午4.23.11


实例

a

转载于:https://www.cnblogs.com/halox/p/STL-zhiDeque.html

你可能感兴趣的文章
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>