珠海 电商 网站建设做网站建设有前途那

bicheng/2026/1/16 15:06:09/文章来源:
珠海 电商 网站建设,做网站建设有前途那,动态门户网站建设价格,wordpress函数语言目录 1. 读源码 2. 搭建框架 3. 迭代器的操作 operator*() operator-() operator() operator--() operator!() 4. 实现 list 的反向迭代器 5. 实现 vector 的反向迭代器 6. 源码分享 写在最后#xff1a; 1. 读源码 我们之前实现的 vector#xff0c;list…目录 1. 读源码 2. 搭建框架  3. 迭代器的操作 operator*()  operator-() operator() operator--() operator!() 4. 实现 list 的反向迭代器 5. 实现 vector 的反向迭代器 6. 源码分享 写在最后 1. 读源码 我们之前实现的 vectorlist 好像都只实现了他们的正向迭代器那有正向 会有反向迭代器这种东西吗答案是有的那我们该怎么实现呢 实际上根据我们之前的经验根据每个容器的特色实现一份就好了 但是之前在读源码的时候好像并没有看到源码实现这是怎么一回事呢 来读读 list 的源码是怎么做的 我们在这里找到了 list 的反向迭代器他没有自己实现 而是直接使用了这个 reverse_iterator 的类模板这又是怎么一回事呢 我们在 STL 源码的 stl_iterator.h 文件中找到了答案 这里面竟然存在这样一个类reverse_iterator难道说其他的容器 也都不是自己实现一份反向迭代器而是直接使用这个类吗 想到这里我们赶紧去看一眼 vector 的源码 发现了没有他们的调用方式是一模一样的都是同样的调用 使用的类型是他们各自的迭代器类型通过模板的特性 让编译器实例化出不同的代码达成实现他们各自的迭代器的目的 非常巧妙的设计只一份代码让所有的容器的反向迭代器都复用 那他是怎么实现的呢我们来看看他实现的源码 我们可以看到这个就是迭代器类型的成员变量了。 还是老规矩看完成员变量我们去看一下核心的接口实现 先来看 的重载  他的 就是让原先的正向迭代器执行 -- 操作没毛病 再来看 -- 的重载 也没毛病我们再来看看他的解引用操作 这下怪了为啥解引用取到的位置是原先位置的前一个位置呢  那我们就得去看看那些容器的反向迭代器是怎么确定初始位置的了 先来看 list 的 正向迭代器的 begin 就是第一个位置end 就是哨兵位的头结点 但是 rbegin 用的是 end 来初始化反向迭代器也就是他在 end 的位置哨兵位上 而 rend 用的是 begin 来初始化反向迭代器也就是他在 begin 的位置第一个位置上 我们也可以看一下 vector 是不是这样的 可以看到也是这样的。 那这样好像不太对啊如果直接使用迭代器 第一次解引用就会出问题这里我写段伪代码感受一下 rit   rbegin() while(rit ! rend()) { cout *rit endl; // 这里就出问题了 rit; } 所以库里在实现的解引用操作符的时候解引用的就是他的前一个位置 我再截出来看一眼 现在看的也差不多了马上开始动手实现吧~ 2. 搭建框架  namespace xl {template class Iteratorclass reverse_iterator {private:Iterator _it;public:reverse_iterator(Iterator it): _it(it){}}; }其实框架就一点点啦 就是写个成员变量写个构造函数就差不多完成啦。 3. 迭代器的操作 operator*()  我们直接上手 operator*() {Iterator tmp _it;return *(--tmp); } 这个时候我们遇到了一些困难 我们该怎么返回这个值呢还是跟之前一样我们需要让他支持 const 类型 先来看看源码是怎么实现的 他这里的 reference 通过了一系列的复杂操作然后套了出来 这里他用的操作是萃取比较的麻烦还涉及模板的特化 所以我们打算用一个比较方便暴力的方法就是通过模板参数直接传过来 Ref operator*() {Iterator tmp _it;return *(--tmp); } 这样下面的实现也解决了 operator-() Ptr operator-() {return (operator*()); } operator() 这里我们再顺便把类名 typedef 一下因为他太长了 然后来实现 这里我都是前置和后置都实现了 self operator() {--_it;return *this; }self operator(int) {self tmp _it;--_it;return tmp; } operator--() self operator--() {_it;return *this; }self operator--(int) {self tmp _it;_it;return tmp; }operator!() 直接用正向迭代器的 ! 比较即可 bool operator!(const self s) {return _it ! s._it; } 4. 实现 list 的反向迭代器 typedef reverse_iteratoriterator, const T, const T* const_reverse_iterator; typedef reverse_iteratoriterator, T, T* reverse_iterator;reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return reverse_iterator(begin()); } 我们来测试一下 #include iterator.h #include list.hint main() {xl::listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);for (auto e : lt) cout e ;cout endl;xl::listint::reverse_iterator rit lt.rbegin();while (rit ! lt.rend()) {cout *rit ;rit;}cout endl;return 0; } 输出 输出没毛病~  5. 实现 vector 的反向迭代器 跟 list 一模一样的操作直接把代码粘过来即可 然后我们直接测试 void test_vector() {xl::vectorint v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);for (auto e : v) cout e ;cout endl;xl::vectorint::reverse_iterator rit v.rbegin();while (rit ! v.rend()) {cout *rit ;rit;}cout endl; } 输出 结果也没毛病~  6. 源码分享 模拟实现简易STL: 模拟实现简易STL (gitee.com) 写在最后 以上就是本篇文章的内容了感谢你的阅读。 如果感到有所收获的话可以给博主点一个赞哦。 如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广元专业高端网站建设专业的企业小程序开发公司

Vue.js 是一个构建数据驱动的 web 界面的渐进式框架。它是目前前端开发领域非常热门的技术之一,因为它易于上手,功能强大,且与其他库或已有项目整合度高。 下面是一个简单的 Vue 项目实战步骤,帮助你了解如何使用 Vue.js 来创建一…

福州网站免费制作酒泉网站建设哪家好

前言 在数字化的过程中,数据可视化变得越来越重要。用户喜欢通过酷炫的视觉效果和直观的数据展示来理解数据。可视化地图组件是数据可视化的重要组成部分。这些地图组件提供多样化的效果,能够更好地展示数据的关系和地理分布,直观地将数据与…

怎么开网站自己设计一款新产品

文章目录 力扣225-用队列实现栈示例代码实现总结收获 力扣225-用队列实现栈 示例 代码实现 class MyStack {Queue<Integer>queue1;Queue<Integer>queue2;public MyStack() {queue1new LinkedList<Integer>();queue2new LinkedList<Integer>();}public…

慢慢网站建设免费追剧网站

导读近日&#xff0c;玖章算术 NineData 智能数据管理平台成功中标《2023 年移动云数据库传输服务软件项目》&#xff0c;中标金额为 406 万。这标志着玖章算术 NineData 平台已成功落地顶级运营商行业&#xff0c;并在数据管理方面实现了大规模应用实践。 NineData 中标 2023 …

公司网站公司哪家好万网网站建设的子分类能显示多少个

k8s之共享存储pv&pvc 1 存储资源管理 在基于k8s容器云平台上&#xff0c;对存储资源的使用需求通常包括以下几方面&#xff1a; 1.应用配置文件、密钥的管理&#xff1b; 2.应用的数据持久化存储&#xff1b; 3.在不同的应用间共享数据存储&#xff1b; k8s的Volume抽象概…

网站设计制作ihanshi上海装修公司口碑最好的是哪家

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

佛山网站搭建费用对网站的界面设计分析

文章目录 奥威亚视频云平台VideoCover.aspx 接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议奥威亚视频云平台VideoCover.aspx 接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责…

滁州市大滁城建设网站省住房城乡建设厅网站

据个人的编程开发经验&#xff0c;Python的比较运算符最常于条件判断&#xff0c;而条件判断是python编程中最常用的语法之一&#xff0c;与for或while的循环一样&#xff0c;功能十分强大&#xff01; 在机器学习当中&#xff0c;或深度学习当中&#xff0c;在运用算法对统计…

工信部备案网站玉树商城网站建设

一、渗透测试的流程 1.明确目标&#xff1a; 确定需要渗透资产的范围&#xff1b;确定规则&#xff0c;怎么去渗透&#xff1b;确定需求&#xff1a;需要达到什么样的效果 2.信息收集&#xff1a; 首先可以用社会工程学的方法来收集信息&#xff0c;看看有没有好的薄弱点。然…

黄江网站设计免费文档模板网站

文章目录 键入网址到网页显示&#xff0c;期间发生了什么&#xff1f;1. HTTP2. 真实地址查询 —— DNS3. 指南好帮手 —— 协议栈4. 可靠传输 —— TCP5. 远程定位 —— IP6. 两点传输 —— MAC7. 出口 —— 网卡8. 送别者 —— 交换机9. 出境大门 —— 路由器10. 互相扒皮 —…

做游戏音频下载网站重庆合川企业网站建设联系电话

目录 0. 序言 1. EMC的基础介绍 1.1 EMC电磁兼容的定义 1.2 EMC的重要性 1.3 EMC的三要素 2. 库仑定律 3. 趋肤效应与趋肤深度 4. 电阻抗公式 4.1 电阻 4.2 容抗 4.3 感抗 4.4 电路元件的非理想性 5. 麦克斯韦方程组 5.1 高斯磁定律 5.2 高斯定律 5.3 法拉…

ppt做的模板下载网站有哪些校园网站开发背景

描述下Vue自定义指令 &#xff08;1&#xff09;自定义指令基本内容&#xff08;2&#xff09;使用场景&#xff08;3&#xff09;使用案例 在 Vue2.0 中&#xff0c;代码复用和抽象的主要形式是组件。然而&#xff0c;有的情况下&#xff0c;你仍然需要对普通 DOM 元素进行底层…

长沙岳麓区网站开发宿松 做网站

详细介绍了常见的四种Linux应用软件安装包及其安装方法。一、解析Linux应用软件安装包&#xff0c;通常Linux应用软件的安装包有四种&#xff1a;1) tar包&#xff0c;如software-1.2.3-1.tar.gz。他是使用UNIX系统的打包工具tar打包的。2) rpm包&#xff0c;如software-1.2.3-…

网络推广网站建设精美ppt模板免费下载软件

背景 由于我们在flink中使用了状态比较大&#xff0c;无法完全把状态数据存放到tm的堆内存中&#xff0c;所以我们选择了把状态存放到rockdb上&#xff0c;也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项 使用rockdb状态后端…

用php做视频网站软文广告投放平台

1.如何对接口鉴权这样一个功能开发做面向对象分析 本章会结合一个真实的案例&#xff0c;从基础的需求分析、职责划分、类的定义、交互、组装运行讲起&#xff0c;将最基础的面向对象分析&#xff08;00A&#xff09;、设计&#xff08;00D&#xff09;、编程&#xff08;00P&…

常州网站制作维护室内设计公司排名榜

文章目录&#xff1a; 一&#xff1a;考试时间 二&#xff1a;考试科目 三&#xff1a;相关网站 四&#xff1a;相关 一&#xff1a;考试时间 教资 笔试 面试笔试报名笔试考试笔试公布面试报名面试时间面试公布上半年1月14日3月12日4月15日4月…

公司网站后台导航链接怎么做网站自己推广

文章目录 引言1、安装FFmpeg2、安装Nginx服务器3、实现本地视频推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP &#xff08;Real-Time Streaming Protocol&#xff09;实时流媒体协议。 RTSP定义流格式&#xff…

企业网站建设研究论文有没有免费的小程序制作

1.消失的数字 【题目】&#xff1a;题目链接 思路1&#xff1a;排序——》qsort快排——》时间复杂度O&#xff08;n*log2n&#xff09; 不符合要求 思路2&#xff1a;&#xff08;0123...n)-(a[0]a[1][2]...a[n-2]) ——》 时间复杂度O&#xff08;N&#xff09;空间复杂度…

腾讯公司网站建设工程施工合同 示范文本

1 背景 数据服务与数据分析场景是数据团队在数据应用上两个大的方向&#xff0c;行业内大家有可能会遇到下面的问题&#xff1a; 1.1 数据服务 烟囱式开发模式&#xff1a;每来一个需求开发一个数据服务&#xff0c;数据服务无法复用&#xff0c;难以平台化&#xff0c;技术…

贵州网站seo做百度推广去些网站加客户

首先给出第一级是OTA&#xff0c;第二级是CS的二级运放电路图&#xff1a; gmid的设计方法可以根据GBW、Av、CL来进行电路设计&#xff0c;因此在设计电路之前需要以上的参数要求。 1、为了满足电路的相位裕度至少60&#xff0c;需要对GBW、主极点、零点进行分析。 首先给出其…