当前位置: 首页 > news >正文

广安网站建设网站建设江苏

广安网站建设,网站建设江苏,建设适应连锁行业网站,怎样在百度上宣传自己的产品C 浅谈之 STL Deque HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 C 浅谈系列,收录在专栏 C 语言中 😜😜😜 本系列阿呆将记录一些 C 语言重要的语法特性 🏃&a…

C++ 浅谈之 STL Deque

HELLO,各位博友好,我是阿呆 🙈🙈🙈

这里是 C++ 浅谈系列,收录在专栏 C++ 语言中 😜😜😜

本系列阿呆将记录一些 C++ 语言重要的语法特性 🏃🏃🏃

OK,兄弟们,废话不多直接开冲 🌞🌞🌞


一 🏠 概述

简单介绍

Deque 双端队列,在头尾对元素进行删除和插入快,中间插入或删除效率低,支持元素随机访问。它是动态分段连续空间组合而成,无 capacity 概念,可即时增加新空间(不会像 vector 因旧空间不足而重新申请)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JUQ3IwMY-1675954090283)(E:\2022年MD文档\2023 年 MD文档\二月\浅谈系列\C++ 浅谈之 STL Deque.assets\1675951423972.png)]

和 Vector 维护连续线性空间不同,Deque 维护多段连续空间,各段间不一定连续,Deque 用数组(名为 map)存储着各连续空间首地址 👦👦👦

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJg1VBNk-1675954090285)(E:\2022年MD文档\2023 年 MD文档\二月\浅谈系列\C++ 浅谈之 STL Deque.assets\1675951752739.png)]


迭代器

分段存储提高了两端添加,删除的效率,也使容器迭代器实现更复杂,有如下 2 个问题

① 迭代器遍历时,须确认各连续空间在 map 数组中的位置 👨‍🚀👨‍🚀👨‍🚀

② 迭代器在某个连续空间时,须知道是否处于空间边缘(一旦前进,需要跳到下一个连续空间)

//迭代器内部实现如上,包含 4 个指针
template<class T,...>
struct __deque_iterator{...T* cur; //指向当前正在遍历的元素T* first; //指向当前连续空间的首地址T* last; //指向当前连续空间的末尾地址map_pointer node; //T** 二级指针, 指向 map 数组中存储的指向当前连续空间的指针
}

借助这四个指针和运算符重载,使迭代器可以在分段连续空间遍历 🎅🎅🎅

//当迭代器处于当前连续空间边缘的位置时,如果继续遍历,就需要跳跃到其它的连续空间中,该函数可用来实现此功能
void set_node(map_pointer new_node){node = new_node;//记录新的连续空间在 map 数组中的位置first = *new_node; //更新 first 指针//更新 last 指针,difference_type(buffer_size())表示每段连续空间的长度last = first + difference_type(buffer_size());
}//重载 * 运算符
reference operator*() const{return *cur;}
pointer operator->() const{return &(operator *());}//重载前置 ++ 运算符
self & operator++(){++cur;//处理 cur 处于连续空间边缘的特殊情况if(cur == last){//调用该函数,将迭代器跳跃到下一个连续空间中set_node(node+1);//对 cur 重新赋值cur = first;}return *this;
}//重置前置 -- 运算符
self& operator--(){//如果 cur 位于连续空间边缘,则先将迭代器跳跃到前一个连续空间中if(cur == first){set_node(node-1);cur == last;}--cur;return *this;
}

二 🏠 核心

底层实现

STL Deque 有如下的定义代码 👇👇👇

//_Alloc为内存分配器
template<class _Ty,class _Alloc = allocator<_Ty>>
class deque{...
protected:iterator start; // map 数组中首个连续空间的信息iterator finish; //map 数组中最后一个连续空间的信息map_pointer map;
...
}

内部空间布局,如下图所示 🐳🐳🐳

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbKUALTy-1675954090286)(E:\2022年MD文档\2023 年 MD文档\二月\浅谈系列\C++ 浅谈之 STL Deque.assets\1675951491835.png)]

三 🏠 结语

身处于这个浮躁的社会,却有耐心看到这里,你一定是个很厉害的人吧 👍👍👍

各位博友觉得文章有帮助的话,别忘了点赞 + 关注哦,你们的鼓励就是我最大的动力

博主还会不断更新更优质的内容,加油吧!技术人! 💪💪💪

http://www.15wanjia.com/news/173968.html

相关文章:

  • php网站好做seo怎样制作免费的网站
  • 网站更换标题商标设计网上接单第一平台
  • 创建网站做网站需要做数据库
  • 厦门网站开发费用怎么上传网站程序到空间
  • 关键词和网站的关系淮安营销型网站建设
  • 顶呱呱代理建设网站企点官网网址
  • 浏览网站内下载文件景县网站建设
  • 自己建设网站需要什么wordpress 注册邮件插件
  • 找合伙人的网站做淘宝长春网站设计外包
  • 潍坊网站维护湖南网站建设的公司排名
  • 网站做联盟收入注册网站需要房产证
  • 网站简介 更改高端定制网站设计
  • wpf视频教程 -.net购物网站开发怎么样建立网站方案
  • 有什么发布做投标报价的网站小狐狸动画制作软件app下载
  • 做企业网站费用郑州seo关键词
  • 网站怎么做不违法吗做网站前段用什么软件
  • wordpress建站苏州花的网页设计模板素材
  • 地图销售网站免费网站如何做宣传
  • 德州网站开发人员苏州网站建设的一般流程
  • 手机网站推广怎么做苏州制作网站哪家好
  • 软件班级网站建设主题小猪会飞网站建设
  • 苍南县住房和城乡规划建设局网站wordpress去掉域名后缀
  • 设计网站建设方案wordpress商业源码
  • 旅游网站建设和实现什么是传统网站
  • 网站建设实训报告doc中国万网提供的服务和收费情况
  • 装饰网站建设策划书免费的那种app
  • 学院网站建设的意义flash网站建设
  • 网站视觉规范网络推广外包哪个公司做的比较好
  • 新媒体做图网站wordpress 标题栏置顶
  • 成都网站建设学校网站信息备案查询系统