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

简述企业网站建设的目的有哪些网站横幅js代码

简述企业网站建设的目的有哪些,网站横幅js代码,谷歌seo排名公司,深圳制作网站专业朋友们、伙计们#xff0c;我们又见面了#xff0c;本期来给大家解读一下有关反向迭代器的模拟实现#xff0c;如果看完之后对你有一定的启发#xff0c;那么请留下你的三连#xff0c;祝大家心想事成#xff01; C 语 言 专 栏#xff1a;C语言#xff1a;从入门到精通… 朋友们、伙计们我们又见面了本期来给大家解读一下有关反向迭代器的模拟实现如果看完之后对你有一定的启发那么请留下你的三连祝大家心想事成 C 语 言 专 栏C语言从入门到精通 数据结构专栏数据结构 个  人  主  页 stackY、 C 专 栏   C Linux 专 栏  Linux ​ 目录 前言 1. 基本构造 2. 接口完善 3. 在list中使用反向迭代器 list反向迭代器版本一 list反向迭代器版本二  4. 在vector中使用反向迭代器  前言 前面的模拟实现vector和list中是没有实现反向迭代器的反向迭代器与正向迭代器相比就是从数据的末端向前面访问遍历但是两个迭代器的用法都是一样的就是下一个*就可以访问到数据但是它具体是怎么实现的呢我们接下来看一看 1. 基本构造 在list的模拟实现中讲解了如何实现正向迭代器包含const版本和非const版本那么在本期实现反向迭代器的时候就有了一定的前车之鉴比如const版本和非const版本不需要实现两份代码可以采用模板实现泛型编程。 反向迭代器的构造可以使用正向迭代器来进行复用因为反向迭代器的就是正向迭代器里面的--所以在传递模板参数的时候可以直接传递一个迭代器直接复用这个迭代器里面的各种结构完成反向迭代器的构造。这种方式叫做迭代器适配器。 #pragma oncenamespace ywh {//反向迭代器template class Iterator, class Ref, class Ptrclass ReverseIterator{public:typedef ReverseIteratorIterator, Ref, Ptr Self;//构造ReverseIterator(Iterator it):_it(it){}private:Iterator _it;}; }2. 接口完善 反向迭代器的接口有、--、*、-、!、这些接口的实现都是可以通过使用模板参数中的迭代器来进行复用即可。 头文件 reverse_iterator.h #pragma oncenamespace ywh {//反向迭代器template class Iterator, class Ref, class Ptrclass ReverseIterator{public:typedef ReverseIteratorIterator, Ref, Ptr Self;//构造ReverseIterator(Iterator it):_it(it){}//前置//operatorSelf operator(){//复用传过来的迭代器里面的operator----_it;return *this;}//operator--Selfoperator(){_it;return *this;}//operator*Ref operator*(){return *_it;}//operator-Ptr operator-(){return _it.operator-();}//operatorbool operator(const Self s){return _it s._it;}//operator!bool operator!(const Self s){return _it ! s._it;}private:Iterator _it;}; }3. 在list中使用反向迭代器 要使用反向迭代器首先得在list头文件中包含以下反向迭代器的头文件然后进行构造 list反向迭代器版本一 #pragma once #include reverse_iterator.h namespace ywh {//链表结构templateclass Tstruct list_node{T _data; //节点中的数据list_nodeT* _prev; //指向前一个节点的指针list_nodeT* _next; //指向后一个节点的指针//构造list_node(const T x T()):_data(x), _prev(nullptr), _next(nullptr){}};//正向迭代器// 类型模板参数 传递引用 传递指针templateclass T, class Ref, class Ptrstruct __list_iterator{typedef list_nodeT Node;typedef __list_iteratorT, Ref, Ptr self;Node* _node;//迭代器构造__list_iterator(Node* node):_node(node){}//前置//operatorself operator(){_node _node-_next;return *this;}//operator--self operator--(){_node _node-_prev;return *this;}//后置self operator(int){self* tmp(_node);_node _node-_next;return tmp;}//operator--self operator--(int){self* tmp(_node);_node _node-_prev;return tmp;}//operator*Ref operator*(){return _node-_data;}//operator-Ptr operator-(){return _node-_data;}//operator!bool operator!(const self s){return _node ! s._node;}//operatorbool operator(const self s){return _node s._node;}};//list结构templateclass Tclass list{public:typedef list_nodeT Node;typedef __list_iteratorT, T, T* iterator; //非const迭代器typedef __list_iteratorT, const T, const T* const_iterator; //const迭代器typedef ReverseIteratoriterator, T, T* reverse_iterator; //反向迭代器typedef ReverseIteratorconst_iterator, const T, const T* const_reverse_iterator; //反向迭代器public:基本构造/////...///正向迭代器iterator begin(){return iterator(_head-_next); //使用匿名对象进行构造}iterator end(){return iterator(_head);}const_iterator begin() const{return const_iterator(_head-_next);}const_iterator end() const{return const_iterator(_head);}//反向迭代器/reverse_iterator rbegin(){return reverse_iterator(--end());}reverse_iterator rend(){return reverse_iterator(end());}const_reverse_iterator rbegin() const{return const_reverse_iterator(--end());}const_reverse_iterator rend() const{return const_reverse_iterator(end());}///修改相关接口//...private:Node* _head; //链表的头节点size_t _size; //节点个数}; } list反向迭代器版本二  我们也可以看一下库里面list的反向迭代器如何设计 可以看到库里面的玩法是一种对称的结构这种对称的结构在解引用访问时访问的是下一个节点的元素这样子写是比较好理解的正向的起始就是反向的结束正向的结束就是反向的起始那么我们也可以来按照这种写法来写一下 头文件reverse_iterator.h #pragma once namespace ywh {//反向迭代器template class Iterator, class Ref, class Ptrclass ReverseIterator{public:typedef ReverseIteratorIterator, Ref, Ptr Self;//构造ReverseIterator(Iterator it):_it(it){}//前置//operatorSelf operator(){//复用传过来的迭代器里面的operator----_it;return *this;}//operator--Selfoperator(){_it;return *this;}//operator*Ref operator*(){Iterator cur _it;//返回下一个节点的数据return *(--cur);}//operator-Ptr operator-(){return _it.operator-();}//operatorbool operator(const Self s){return _it s._it;}//operator!bool operator!(const Self s){return _it ! s._it;}private:Iterator _it;}; }头文件List.h #pragma once #include reverse_iterator.h namespace ywh {//链表结构templateclass Tstruct list_node{T _data; //节点中的数据list_nodeT* _prev; //指向前一个节点的指针list_nodeT* _next; //指向后一个节点的指针//构造list_node(const T x T()):_data(x), _prev(nullptr), _next(nullptr){}};//正向迭代器// 类型模板参数 传递引用 传递指针templateclass T, class Ref, class Ptrstruct __list_iterator{typedef list_nodeT Node;typedef __list_iteratorT, Ref, Ptr self;Node* _node;//迭代器构造__list_iterator(Node* node):_node(node){}//前置//operatorself operator(){_node _node-_next;return *this;}//operator--self operator--(){_node _node-_prev;return *this;}//后置self operator(int){self* tmp(_node);_node _node-_next;return tmp;}//operator--self operator--(int){self* tmp(_node);_node _node-_prev;return tmp;}//operator*Ref operator*(){return _node-_data;}//operator-Ptr operator-(){return _node-_data;}//operator!bool operator!(const self s){return _node ! s._node;}//operatorbool operator(const self s){return _node s._node;}};//list结构templateclass Tclass list{public:typedef list_nodeT Node;typedef __list_iteratorT, T, T* iterator; //非const迭代器typedef __list_iteratorT, const T, const T* const_iterator; //const迭代器typedef ReverseIteratoriterator, T, T* reverse_iterator; //反向迭代器typedef ReverseIteratorconst_iterator, const T, const T* const_reverse_iterator; //反向迭代器public:基本构造/////...///正向迭代器iterator begin(){return iterator(_head-_next); //使用匿名对象进行构造}iterator end(){return iterator(_head);}const_iterator begin() const{return const_iterator(_head-_next);}const_iterator end() const{return const_iterator(_head);}//反向迭代器/reverse_iterator rbegin(){return reverse_iterator(end());}reverse_iterator rend(){return reverse_iterator(begin());}const_reverse_iterator rbegin() const{return const_reverse_iterator(end());}const_reverse_iterator rend() const{return const_reverse_iterator(begin());}///修改相关接口//...private:Node* _head; //链表的头节点size_t _size; //节点个数}; } 4. 在vector中使用反向迭代器  vector中的反向迭代器不建议使用上面的版本一因为begin()和end()是传值返回是临时对象而临时对象具有常性不好进行修改所以还是比较建议使用这种对称的结构。 头文件Vector.h #pragma once #include assert.h #include reverse_iterator.h namespace ywh {templateclass Tclass vector{public:typedef T* iterator;typedef const T* const_iterator;typedef ReverseIteratoriterator, T, T* reverse_iterator;typedef ReverseIteratorconst_iterator, const T, const T* const_reverse_iterator;public:/正向迭代器iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin() const{return _start;}const_iterator end() const{return _finish;}/反向迭代器/reverse_iterator rbegin(){return reverse_iterator(end());}reverse_iterator rend(){return reverse_iterator(begin());}const_reverse_iterator rbegin() const{return const_reverse_iterator(end());}const_reverse_iterator rend() const{return const_reverse_iterator(begin());}/基本构造/////...///容量//...///修改//...private:iterator _start nullptr; //起始位置iterator _finish nullptr; //有效数据位置iterator _end_of_storage nullptr; //结束位置}; } 朋友们、伙计们美好的时光总是短暂的我们本期的的分享就到此结束欲知后事如何请听下回分解~最后看完别忘了留下你们弥足珍贵的三连喔感谢大家的支持
http://www.pierceye.com/news/31112/

相关文章:

  • 网站建设情况调研报告建网站报价 优帮云
  • 网站举报网梅河口网站开发
  • 企业网站建设合作协议书网站建设方案书编写
  • 广东佛山如何制作网站公司国家高新区网站建设
  • 怎么选择邯郸做网站网页升级访问中未满十八岁
  • 网站验收技术指标专业网站设计公司
  • 校园网二手书交易网站建设网站栏目设置说明
  • 自己的网站怎么做跳转餐饮手机微网站怎么做
  • 做网站都需要买什么下载app平台
  • 常州西站建设规划网站开发与设计岗位
  • 制作网站需要注意什么网站js下载
  • 租号网站建设贴吧移动互联网时代的渠道模式创新
  • 电脑网站微信支付怎么做的网站建设的客户需求调查与分析
  • 加强人社局网站建设网站备案用户名
  • 手机端网站如何做做网站用的小图标
  • 超炫网站模板外贸网站排行
  • 佛山做网站的哪个好wordpress 左侧导航菜单
  • 网站 公众号信息化建设工作网站营销学多久
  • 如何把网站推广沈阳有做网站的吗
  • 宜昌做网站公司有哪些网站什么是运营管理
  • 电子商务网站建设与管理 李建忠深圳app推广平台
  • 美食门户类网站模版网站开发网站维护这行业怎么样
  • 济宁计算机网站建设培训班wordpress缩略图没
  • 网站开发所需要的的环境经营类网页游戏大全
  • 广州越秀建网站短网址源码wordpress
  • 南沙建设网站google推广一年3万的效果
  • 成都市文化馆网站建设电子商务网站怎么做
  • 建设银行网站 查余额企业客户信息管理软件
  • 广东省工程建设注册中心网站繁峙做网站建设
  • 鹰潭做网站的网站方案原则