array实现用类对数组的封装,这样可以使用 algorithm 对其进行操作。

其容量不可扩展。

使用 native pointer 作为 iterator,这点与 vector 一致。

如果申请一个大小为 0 的数组会自动扩充到 1 .

deque

map(T**)指向整个“控制中心”,每个控制中心的单元都指向存放元素的大块内存 buffer ,大块内存里面放置了元素。

iterator内含4个指针:
1)first(T*)—— buffer 开始的位置
2)last(T*)—— buffer 结束的位置
3)cur(T*)——当前元素的位置
4)node(T**)——当前 buffer 在“控制中心”对应的单元的位置

在64位系统下,一个 iterato r的大小为 4*8=32byte

一个 deque 的组成:
1)start 和 finish 两个 iterator
2)map(T**)指向”控制中心“的 pointer
3)一个统计有多少块 buffer 的 map_size

在64位系统下,一个空的 deque 的大小为 32 * 2 + 8 * 2 = 80

buffer size 的大小也就是一个缓冲区存放多少元素该如何决定呢?
如果有指定大小就使用指定的大小;
如果没有指定的大小就将元素的大小与 512 byte 比较
如果大于等于 512 byte 一个 buffer 就只存放一个元素。
如果小于 512 byte 一个 buffer 就存放 512/size 个元素。

deque 的 iterator 具有能够跳跃的特性

deque 的 insert()函数

先判断是否在头端或者在尾端,是的话直接调用函数实现插入,否则使用辅助函数

判断插入点的位置是靠近头端还是更靠近尾端,如果更加靠近头端,就将插入位置前面的元素都向前挪动一格,如果更加靠近右端就将插入位置后面的元素都向后面移动一格。

deque的操作符重载

获取 size 的时候,使用了 - 的操作符重载

两个元素之间的间隔 = 第一块 buffer 的元素个数 + 中间间隔的 buffer 个数 * buffer 中含的元素的个数 + 最后一块 buffer 元素个数。

后置递增 / 递减符号调用前置 递增 / 递减函数


deque 如何模拟连续空间?
先判断目标位置和当前位置是否在同一个 buffer 里头,如果是就直接移动,如果不是,中间间隔了多少个 buffer
如果 offerset < 0 那一块儿有些没有看懂。

如果是 - 号就相当于 offerset 为负



容器 queue 和 stack 使用了 deque 的部分函数,如果其他的容器也有同名的函数可以调用,也可以作为 queue 和 stack 的底层实现。

无法获取 queue 和 stack 的迭代器,因为这两个容器不支持随机访问,只是简单的调用了底层实现的某些函数。

2021-11-21STL——arraydeque相关推荐

  1. 史上最详细微信小程序授权登录与后端SprIngBoot交互操作说明,附源代码,有疑惑大家可以直接留言,蟹蟹 2021.11.29完善更新小程序代码,

    2021.11.29 更新文章 你好,我是博主宁在春,一起学习吧!!! 写这篇文章的原因,主要是因为最近在写毕业设计,用到了小程序,这中间曲曲折折,一言难尽啊.毕业设计真的让人麻脑阔

  2. 读论文——Pre-Training with Whole Word Masking for Chinese BERT(2021 11.25)

    第一遍 标题以及作者(2021 11.25) 摘要 本文基于BERT,在RoBERTa上进行一系列改进,提出了用于中文的预训练模型MacBERT. 提出了一种新的掩码策略,MLM as correct ...

  3. 首页推荐流支持快捷修改兴趣标签,问答支持展示gif【2021.11.8】

    hello,大家好,这里是「CSDN产品周报」第17期.本次更新主要涉及首页和问答两个产品模块,具体细节请往下看. 一.首页优化 1.「推荐」信息流新增「修改兴趣标签」按钮 从用户需求的角度考虑,对内 ...

  4. 【报告分享】小红书平台2021 11.11期间行业投放分析报告-千瓜数据(附下载)

    摘要:随着平台多元化发展,用户体量增加,小红书逐渐拥抱了更多的年轻用户群体,也给更多的品牌带来了增长机会.据小红书方透露,2021年小红书平台的单日笔记曝光已经超100亿次,且男性用户占比已经达到了3 ...

  5. 2021.11.8-11.14 AI行业周刊(第71期):AI行业经验

    篇章一:行业经验 不同的AI公司,对于AI产品的场景定位不同. 有的公司是面向C端产品.有的公司专门做B端用户. 当然大白所在的公司,也有具体的定位,主要面向智慧金融.智慧机场.智慧城市. 之前,一直 ...

  6. 第13期微生物组-宏基因组分析(线上/线下同时开课,2021.11)

    福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析.宏基因组.Python课程和转录组的线上直播课.报名参加线上直播课的老师可在1年内选择参加同课程的一次线下课 ...

  7. 【不忘初心】Win10_LTSC2021_19044.1381_X64_可更新[纯净精简版][2.52G](2021.11.20)

    此版可正常更新补丁,母版来自UUP WIN10_LTSC2021 19044.1288集成补丁到19044.1381为了保证稳定初心的系统全部都是离线精简和优化,非二次封装.系统纯净.流畅.进程少无任 ...

  8. 微生物组-宏基因组分析(线上/线下同时开课,2021.11)

    福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析.宏基因组.Python课程和转录组的线上直播课.报名参加线上直播课的老师可在1年内选择参加同课程的一次线下课 ...

  9. 《星科快报》2021.11.11何为NFT

    <星科快报>2021.11.9---何为NFT 艺术经销商.Artnet专栏作家和自称为NFT的传播者Kenny Schachter认为,数字作品可能会在五年内让传统艺术市场黯然失色. 本 ...

  10. 2021/11/27大数据1+XJava答案

    2021/11/27 步骤二 //已经提供Student类的属性,补充完成该类的有参(五个参数)及无参构造方法public Student(){}public Student(String name, ...

最新文章

  1. 封装DateTimePicker并使用绑定时遇到的问题
  2. _matroska_decode_buffer in
  3. python跟java-Python和Java该学哪个?还在纠结的你看过来呀~
  4. 慕课堂签到迟到怎么办_线上教学第一周:长安大学精品课程助力“云端课堂”...
  5. SprintBoot中JPA的使用
  6. 使用容器服务支持开发者快速搭建小程序后端服务
  7. 须使用visual c 内联汇编语言开发,在VisualC 中使用内联汇编
  8. R7-3 福到了 (10 分)
  9. python为运行为何出现乱码_我的python写入文件正常,打开后却是乱码格式为什么?...
  10. java读取手机崩溃日志_Android抓取崩溃日志
  11. Create umbraco website-On the road of umbraco (1)
  12. 【OSPF外部路由-4类LSA(sum-asbr)和5类LSA(external)以及7类LSA(Nssa)】(OSPF的特殊区域)(外部路由选路特性)
  13. win2003 64位系统IIS6.0 32位与64位间切换
  14. nachos源码阅读 (内存管理)
  15. 「前任的50种死法」开发踩坑案例--慢就是错
  16. 基于unity+HTC VIVE的室内漫游交互(教你如何“无代码”VR交互)
  17. 【电源专题】LDO基础——压降
  18. uestc 1546 Bracket Sequence (成段更新)
  19. 网页右下角弹出广告窗口 超简洁
  20. Android 8.1 系统按键音

热门文章

  1. 网易云音乐接口+vue全家桶开发一款移动端音乐webApp
  2. 基于SpringBoot的个性化推荐的图书借阅管理系统前后台设计
  3. SketchUp 进阶笔记
  4. 无法连接同事的计算机,win7开启QQ远程协助连不上别人电脑怎么办_win7系统qq远程协助无法连接对方电脑修复方法...
  5. java中如何实现qq登录与微博登录,如何从零开始对接第三方登录(Java版):QQ登录和微博登录(2)...
  6. Level3-Unit1-Part2#Listening·Kim's Movie Star Dream
  7. CelebA数据集的解压问题
  8. CSP-J第二轮真题 分类题单
  9. [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)...
  10. p50搭载鸿蒙os有什么不同,后置镜头变液态双摄?华为P50Pro再曝光,搭载鸿蒙OS传感器变1寸...