• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-05-18 15:00 Aet 隐藏边栏 |   抢沙发  3 
文章评分 2 次,平均分 5.0

概述

vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。

所谓双向开口,是指可以在头尾两端分别做元素的插入和删除操作。

区别

vector相比:

  • deque运行常数时间内对起头端进行元素的插入和移除操作
  • deque没有所谓的容量的概念,因为他是动态得以分段连续空间组合而成,随时可以增加一段新的空间并链接起来
    换言之:
    vector那样“因旧空间不足而重新配置一块更大得空间,然后复制元素,再释放旧空间”这样的事情在deque是不会发生的。

中控器

deque是由一段一段的定量连续空间构成。

一旦有必要在deque的前段和尾端增加新空间,便配置一段定量连续空间,串联在整个deque的头端和尾端。

deque的最大任务,就是在这些分段的定量连续空间上,维护其整体连续的假象,并提供随机存取的接口。

deque采用一块所谓的map(不是STL的map)作为主控。这里所指的map是一小块连续空间,其中每个元素(结点)都是指针,指向另一段(较大的)连续线性空间,称为缓冲区。

缓冲区才是deque的存储空间主体。

SGI STL允许我们指定缓冲区的大小,默认值0表示将使用512bytes缓冲区

迭代器

对于deque的迭代器,它必须能够指出分段连续空间在哪里,其次它也必须能够判断自己是否已经处于其所在缓冲区的边缘,如果是,一旦前进或后退时就必须跳跃到下一个或上一个缓冲区。为了能够正常跳跃,deque必须随时掌握管控中心map

数据结构

构造与内存管理

操作

pop_back

pop_front

clear

erase

insert

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-27
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享