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

宁波建设网站多少钱谷歌wordpress建站

宁波建设网站多少钱,谷歌wordpress建站,兰州装修公司哪家好,视频网站怎么做的反爬虫前言: 上一章我们介绍了适配器,也提了一下迭代器适配器,今天我们就从反向迭代器把迭代器适配器给解释一下。 既然 都叫迭代器容器了 就说名只要接口合适他可以封装实现各种容器需求包括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.yayakq.cn/news/849077/

相关文章:

  • 彩票网站开发是否合法中国交通建设集团有限公司是央企
  • 四川网站建设免费咨询泰安市住房和城乡建设部网站
  • 业余做衣服的网站网站收录下降的原因
  • wap仿制网站教程博文阅读网站建设
  • 如何给英文网站做外链微网站建设的第一步
  • 加油站项目建设背景学校建设门户网站的好处
  • 哪个网站是专门做招商的平台怎么在网上查网站空间是双线还是单线
  • 广州网站营销优化qq0基础网站建设教程视频
  • 简单模板网站制作时间网站排名不稳定怎么办
  • 江宁区住房与城乡建设局网站360网站怎么做网址链接
  • 1688官网入口优化网站打开速度
  • 大气婚庆网站源码宁夏政务大厅城乡建设厅口网站
  • 网站是怎么建成的可以建站的网站
  • aws的efs可以做网站的什么信誉好的盐城网站建设
  • 基金会网站建设方案引流推广方式
  • 建设厅焊工证查询网站西地那非最佳吃法
  • 网站建设验收要求问答社交网站开发
  • 做网站外贸怎么找客户学校网站建设计入哪个会计科目
  • 兰州网络营销网站四川城乡和建设厅网站
  • 做微信商城网站公司asp.net mvc网站开发之美
  • 泉州网站建设方案优化wordpress 商业主题插件
  • php网站设计网络规划设计师多少分通过
  • 做网站的公司赚钱吗python3 做网站
  • 山西建设监理协会网站桂林论坛网七星区
  • 现在外贸做哪个网站好个人网站的域名注册
  • 注册公司和建网站建设建材网站费用
  • 手机网站建设计wordpress页面调取
  • 宣武青岛网站建设中国建设银行积分查询网站
  • 长沙seo网站推广做中学学中做网站
  • 宁德城乡建设网站免费搭建个人网站