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

如何做喊单网站网络推广策划方案怎么写

如何做喊单网站,网络推广策划方案怎么写,优化百度网站,杭州市钱江新城投资集团有限公司征集网站建设合作单位的公告目录 一、反向迭代器 二、反向迭代器的实现 一、反向迭代器 之前的模拟实现vector、list 的时候,这些都是实现了正向迭代器,反向迭代器都没有实现,这里就要实现反向迭代器 反向迭代器也是适配器(配接器)的一种&#…

目录

一、反向迭代器

二、反向迭代器的实现


一、反向迭代器

        之前的模拟实现vector、list 的时候,这些都是实现了正向迭代器,反向迭代器都没有实现,这里就要实现反向迭代器

        反向迭代器也是适配器(配接器)的一种,反向迭代器的实现是对正向迭代器的封装,即实现的反向迭代器能支持多种容器,给出该容器的正向迭代器就能支持反向迭代器

        比如 vector 需要反向迭代器,那就把 vector 的正向迭代器传给 反向迭代器,它就可以通过正向迭代器转换出 vector 的反向迭代器。

        也就是说,实现的反向迭代器并包装的这个类,不是针对某个容器而是针对所有容器的,任何一个容器只要你实现了正向迭代器,就可以通过其适配出反向迭代器

要注意反向迭代器的错位访问

对于 list 而言,正向迭代器的 begin 和 end 位置如下

        begin 位于头结点的下一个节点,end 则位于尾结点的下一个节点,即头节点,正向迭代器 ++ 操作,迭代器是往后走的

反向迭代器 rbegin 和 rend 位置如下

        反向迭代器 rbegin() 位于正向迭代器 end() 的位置, 反向迭代器 rend() 位于正向迭代器 begin() 的位置,反向迭代器 ++操作迭代器是往前走的

vector 反向迭代器也是如此

对于 list 来说,反向迭代器解引用取数据,取的是头节点上一个节点位置的数据,vector 也是如此

二、反向迭代器的实现

Iterator.h

#pragma oncetemplate<class Iterator, class Ref, class Ptr>
class ReverseIterator
{typedef ReverseIterator<Iterator, Ref, Ptr> Self;
public:ReverseIterator(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){return _it != s._it;}private:Iterator _it;
};

下面套到 list 里面进行测试

//反向迭代器
typedef ReverseIterator<iterator, T&, T*> reverse_iterator;
typedef ReverseIterator<const_iterator, const T&, const T*> const_reverse_iterator;

在 list 里面添加反向迭代器代码

reverse_iterator rbegin()
{return reverse_iterator(end());
}reverse_iterator rend()
{return reverse_iterator(begin());
}

测试代码

void Test_ReverseIterator()
{fy::list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);fy::list<int>::iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";++it;}cout << endl;fy::list<int>::reverse_iterator rit = lt.rbegin();while (rit != lt.rend()){cout << *rit << " ";++rit;}cout << endl;
}

 运行结果

list 的反向迭代器就完成了,下面测试 vector 的反向迭代器

把 Iterotor.h 拷贝一份到 vector 里面

//反向迭代器
typedef ReverseIterator<iterator, T&, T*> reverse_iterator;
typedef ReverseIterator<const_iterator, const T&, const T*> const_reverse_iterator;

在 vector 里面添加反向迭代器代码

reverse_iterator rbegin()
{return reverse_iterator(end());
}reverse_iterator rend()
{return reverse_iterator(begin());
}

测试代码

void Test_ReverseIterator()
{fy::vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(5);v.push_back(6);fy::vector<int>::iterator it = v.begin();while (it != v.end()){cout << *it << " ";++it;}cout << endl;//反向迭代器fy::vector<int>::reverse_iterator rit = v.rbegin();while (rit != v.rend()){cout << *rit << " ";++rit;}cout << endl;}

运行结果

----------------我是分割线---------------

文章到这里就结束了,下一篇即将更新

 

http://www.masaee.cn/news/646.html

相关文章:

  • 用什么软件可以做网站百度识图查图片
  • 做设计转钱网站推广运营是什么工作
  • 个人博客网站取名潍坊seo排名
  • 加盟产品网站建设方案站长工具查询域名信息
  • 什么网站做执法仪太原seo报价
  • 有那些专门做职业统计的网站河北seo
  • 什么叫网站建设四网合一上海关键词优化排名哪家好
  • 北京微网站建设设计服务公司搜索热度和搜索人气
  • 重庆网站开发专门培训seo的网站
  • 浙江城乡住房建设厅网站首页珠海网络推广公司
  • 什么网站容易做郑州seo外包费用
  • 深圳家居网站建设公司高权重友情链接
  • 福州精美个人网站建设公司大型门户网站建设
  • 社交网站建设内容廊坊网站建设公司
  • 江门国际网网络营销优化推广
  • 淘宝购物券网站怎么做防恶意竞价点击软件
  • 中国政府网站建设与应用全文搜索引擎有哪些
  • 重庆一般建一个网站需要多少钱怎么做seo
  • 廊坊做网站电话电脑培训速成班多少钱
  • 北京网站开发建设百度平台商家客服
  • 什么什么网站seo网站推广是什么意思
  • 淘客网站难做吗今日最新的新闻
  • 网站做关键词排行一个月多少钱考证培训机构
  • 做网站有关机械的图片信息流广告优化师培训
  • 电商网站春节放假通知如何做线上推广
  • 网站根目录表示家电企业网站推广方案
  • 嘉兴网站建设网站seo泛目录培训
  • 大连网站推广企业网站模板图片
  • 怎么做全息网站网站关键词公司
  • 重庆网站推广的网站推广优化方案