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

英文外贸网站建设推广sem模型

英文外贸网站建设推广,sem模型,上海建定建设工程信息网,专业做校园文化的网站前言: 上一章我们介绍了适配器,也提了一下迭代器适配器,今天我们就从反向迭代器把迭代器适配器给解释一下。 既然 都叫迭代器容器了 就说名只要接口合适他可以封装实现各种容器需求包括vector list 。 目录 1.反向迭代器设计 1.1反向迭代…

前言:

上一章我们介绍了适配器,也提了一下迭代器适配器,今天我们就从反向迭代器把迭代器适配器给解释一下。

既然 都叫迭代器容器了 就说名只要接口合适他可以封装实现各种容器需求包括vector list 。


目录

1.反向迭代器设计

1.1反向迭代器思想 

1.2多参数模板

2.vecor反向迭代器

3.list反向迭代器



1.反向迭代器设计

 反向迭代器 reverse_iterator 可以用来反向遍历容器,在某些场景下很实用

1.1反向迭代器思想 

因为数组比较简单,我们就从数组引出反向的思想。 

 

注:库中的反向迭代器在设计时,为了最求极致的对称,rbegin() 指向最后一个有效元素的下一个位置,rend() 指向第一个有效元素(位置是与正向迭代器相反的)

 通过图示知道,反向迭代器的++就是正向迭代器的--。反向迭代器的--就是正向迭代器的++,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。

1.2多参数模板

在模拟实现list迭代器时候,我们在const对象对普通对象代码的复用的 过程中,引入了多参数模板,不同参数实现不同功能,反向迭代器的实现同样适用。有两点需要注意:

  • 重载operator*()返回的是目标对象的引用,又因为库里追求极致对称,所以我们应该先执行--操作后返回对象的引用。
  • 具体返回的对象是否需要const修饰,取决于我们使用的模板参数。

 

#pragma once
namespace cmx
{template <class iterator, class Ref, class Ptr>struct Reverselterator{typedef Reverselterator<iterator,  Ref,  Ptr> self;iterator _it;Reverselterator(iterator it):_it(it){}Ref operator *(){iterator tmp = _it;return *(--tmp);}Ptr operator ->(){return &(operator*());}self& operator++(){-- _it;return *this;}self& operator--(){++ _it;return *this;}bool operator !=(const self& s) const{return _it != s._it;}};}

完成头文件的编写之后,我们就可以把他运用于所有可以用迭代器访问的容器 比如 vector list,只需要修改模版参数中正向迭代器的代码就可以适配出属于自己的反向迭代器。

2.vecor反向迭代器

 只需要引用 反向迭代器的头文件 ReverseIterator.h 就可以使用,具体代码如下:

#include<assert.h>
#include"ReverseIterator.h"namespace cmx
{template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;typedef Reverselterator<iterator, T&, T*> reverse_iterator;typedef Reverselterator<const_iterator, const T&, const T*> const_reverse_iterator;reverse_iterator rebegin(){//this调用的end()函数return reverse_iterator(end());}reverse_iterator rend(){return reverse_iterator(begin());}

3.list反向迭代器

 代码如下:

	template<class T>class list{typedef list_node<T> Node;public:typedef __list_iterator<T, T&, T*> iterator;typedef __list_iterator<T, const T&, const T*> const_iterator;typedef Reverselterator<iterator, T&, T*> reverse_iterator;typedef Reverselterator<const_iterator, const T&, const T*> const_reverse_iterator;

http://www.hrbkazy.com/news/45153.html

相关文章:

  • 找个网站这么难2021百度关键词优化有效果吗
  • 常州手机网站开发云南网络推广seo代理公司
  • 建设集团网站价格seo属于什么
  • 快速网站建设网络营销岗位技能
  • 苏州微网站制作seo资料网
  • 做商城网站的公司正规代运营公司
  • 网站空间商 权限网站优化课程培训
  • 诸暨有哪些制作网站公司网页搜索
  • 推广普通话内容100字合肥seo优化公司
  • 河北建设信息平台网站百度框架户开户渠道
  • 高新区手机网站建设贵港seo
  • 青岛做网站报价软文营销平台
  • 企业网站 建设流程吉林seo管理平台
  • 怎么在windows做网站站长之家音效
  • 风琴折叠图片效果网站微信营销的方法有哪些
  • 网站转化率偏低怎么办微信推广方案
  • 移动端网站开发前端模板免费平台
  • 互动吧网站模板百度搜索结果优化
  • 烟台 网站建设多少钱手游cpa推广平台
  • 韩国做游戏的电影 迅雷下载网站100个裂变营销案例
  • 百度网站优化升上去优就业seo
  • 查询icp备案跟接入的网站网站开发流程有哪几个阶段
  • 用dreammwea怎么做视频网站全球搜是什么公司
  • 政府网站开发项目书网站权重怎么看
  • 官方网站建设银行信用卡如何自己免费制作网站
  • 托管机构短视频优化
  • 新零售是什么模式杭州seo托管公司推荐
  • 江苏住房和城乡建设厅网站报考成人教育培训机构十大排名
  • 现在网站一般做多大的引流app推广软件
  • 在线diy网站互联网营销培训平台