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

gwt 网站开发安装Wordpress的免费空间

gwt 网站开发,安装Wordpress的免费空间,2018网站开发的革新,东莞最好的网站建设价格一、反向迭代器 在list模拟实现的过程中,第一次接触了迭代器的封装,将list的指针封装成了一个新的类型,并且以迭代器的基本功能对其进行了运算符重载 反向迭代器是对正向迭代器的封装,并且体现了泛型编程的思想,任意…

一、反向迭代器

在list模拟实现的过程中,第一次接触了迭代器的封装,将list的指针封装成了一个新的类型,并且以迭代器的基本功能对其进行了运算符重载

反向迭代器是对正向迭代器的封装,并且体现了泛型编程的思想,任意类型的双向迭代器都可以直接复用反向迭代器

本章将把两个迭代器的实现放在一起比对,更好的体会迭代器的封装

二、list正向迭代器的模拟实现

详解可以看list模拟实现那一章节,这里仅提供一份代码用于对照反向迭代器

	template<class T,class Ref,class Ptr>struct __list_iterator{typedef list_node<T> node;typedef __list_iterator<T, Ref, Ptr> self;node* _pnode;__list_iterator(node* p):_pnode(p){}self& operator++(){_pnode = _pnode->_next;return *this;}self& operator--(){_pnode = _pnode->_prev;return *this;}self operator++(int){self tmp(_pnode);_pnode = _pnode->_next;return tmp;}self operator--(int){self tmp(_pnode);_pnode = _pnode->_prev;return tmp;}Ref operator*(){return _pnode->_data;}Ptr operator->(){return &(_pnode->_data);}bool operator!=(const self& p){return _pnode != p._pnode;}bool operator==(const self& p){return _pnode == p._pnode;}};

三、反向迭代器的封装实现(双向迭代器)

反向迭代器的实现是对正向迭代器的封装

1.成员及其初始化

template<class Iterator,class Ref,class Ptr>
struct ReserveIterator
{typedef ReserveIterator self;//重命名方便使用Iterator _it;//成员变量ReserveIterator(Iterator it):_it(it){}
}

2.基本功能的重载

(1) ++ 和 --

在反向迭代器的概念中,反向迭代器++,就是正向迭代器--

self& operator++()
{_it--;return *this;
}
self& operator--()
{_it++;return *this;
}
//前置++和--
self operator++(int)
{self tmp(*this);_it--;return tmp;
}
self operator--(int)
{self tmp(*this);_it++;return tmp;
}

(2) != 和 ==

bool operator!=(const self& s)
{return _it != s._it;
}
bool operator==(const self& s)
{return _it == s._it;
}

(3) -> 和 *

在实现operator*()之前,要先理解底层,在stl库内的实现,为了让begin()和rend(),所在的物理空间上对称,但在使用的角度上来看,并不对称,为了使其对称,且不影响使用,对*和->的实现作出了调整,解引用返回的是其前一个的位置

Ref operator*()
{Iterator tmp(_it);_it--;return *tmp; 
}
Ptr operator->()
{Iterator tmp(_it);_it--;return &(*_it);
}

3.定义部分

		typedef __list_iterator<T, T&, T*> iterator;typedef __list_iterator<T, const T&, const T*> con_iterator;typedef ReverseIterator<iterator, T&, T*> reverse_iterator;typedef ReverseIterator<iterator,const T&,const T*> con_reverse_iterator;iterator begin(){return iterator(_head->_next);}iterator end(){return iterator(_head);}con_iterator begin()const{return con_iterator(_head->_next);}con_iterator end()const{return con_iterator(_head);}reverse_iterator rbegin(){return reverse_iterator(end());}reverse_iterator rend(){return reverse_iterator(begin());}

总结

本章整理了关于反向迭代器的相关内容,以及模拟实现

http://www.yayakq.cn/news/449780/

相关文章:

  • 大型网站设计重庆市工程建设招标投标交易信息网
  • 国家重点项目建设网站凌河锦州网站建设
  • 过年做那些网站致富h5案例网站
  • .net制作网站开发教程哈尔滨网站建设索q.479185700
  • 学做蛋糕什么网站闵行网络推广公司
  • 网站的访问速度和什么有关系世界500强企业名单查询
  • 专业的深圳网站建设公司排名平台下载素材网站开发
  • 专注电子商务网站建设怎么修改wordpress模板文件
  • 网站建设项目的预算免费无版权图片素材网站
  • 食品行业做网站网站建设的摘要
  • 关于网站建设的英文歌无人视频在线观看免费播放影院
  • 东莞网站建站服务公司四川省乐山市建设银行网站
  • 湖南省建设厅官方网站官网wordpress 多站点
  • 提供网站哪家好wordpress图片主题中文
  • 常德做网站专业公司网站开发设计比较好的公司
  • 电影网站开发库表结构专业拓客团队怎么收费
  • 网站建设网络推广柯做毛绒玩具在什么网站上找客户
  • 广东专业做网站个人网站建设思路
  • 做网站的人多吗深圳网站建设价格是多少
  • 优惠券网站要怎么做wordpress 80端口
  • 沧州海外网站建设三亚网站建设美工
  • 沈阳网站推广优化公司丹东建设网官方网站
  • 河南省教育厅官方网站师德建设网络营销方案的制定
  • 在印度做视频网站网站发布与推广怎么写
  • 找人做网站 源码被盗用06628 网页制作与网站建设
  • 如何注册网站免费的沈阳地区精神文明建设网站
  • 柳州中小企业网站建设手机版网站开发教学
  • 做搜狗网站排名软郑州豆芽网站建设
  • ae做的动效怎么放在网站上wordpress评论qq
  • 网站建设图片尺寸app开发和网站开发价格