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

安庆网站制作合肥关键词排名优化

安庆网站制作,合肥关键词排名优化,ppt下一页,广州公司转让👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.利用适配器的思想…

👀樊梓慕:个人主页

 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》《算法》

🌝每一个不曾起舞的日子,都是对生命的辜负


目录

前言

1.利用适配器的思想

2.有关operator*注意 

 3.利用vector来举例说明


前言

之前我们已经模拟实现过vector、list等容器,但其中我们仅实现了普通迭代器与const迭代器,今天我们就来学习下反向迭代器的实现。


欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。

=========================================================================

GITEE相关代码:🌟fanfei_c的仓库🌟

=========================================================================


1.利用适配器的思想

我们知道stack、queue等不称为容器,而被称作『适配器 』,因为他们的底层是容器deque,即只需要利用deque这个结构来满足stack、queue的特性,此时stack和queue就是一种适配器。

那反向迭代器是不是就是普通迭代器的一种适配呢?

反向迭代器需不需要我们从零开始写呢?还是和适配器一样,利用普通迭代器的结构满足反向迭代器的特性即可?这样是不是比较方便?

  • rbegin()相当于end()
  • rend()相当于begin()
  • 反向迭代器++相当于正向迭代器--
  • 其他操作* != ->和正向迭代器相同

那么我们再拔高一层:

每一种容器或适配器都要实现自己的反向迭代器,如果是这样的话代码会不会太冗余了,因为他们的反向迭代器的逻辑都是相同的。

所以我们可以利用模板参数、泛型来通过传递不同的模板参数来让编译器自己推演出对应容器或适配器的反向迭代器即可。

反向迭代器类:

template<class Iterator, class Ref, class Ptr>
struct ReverseIterator
{typedef ReverseIterator<Iterator, Ref, Ptr> Self;Iterator cur;ReverseIterator(Iterator it):cur(it){}Self& operator++()//前置++{--cur;return *this;}Self operator++(int)//后置++{Iterator tmp = cur;--cur;return tmp;}Self& operator--()//前置--{++cur;return *this;}Self operator--(int)//后置--{Iterator tmp = cur;++cur;return tmp;}Ref operator*()//解引用{Iterator tmp = cur;--tmp;return *tmp;}Ptr operator->(){return &(operator*());}bool operator!=(const Self& s){return cur != s.cur;}bool operator==(const Self& s){return cur == s.cur;}};

2.有关operator*注意 

为了其对称性,使得rbegin()等价于end(),rend()等价于begin()。

  • 但由于end是指向最后一个元素的『 下一个位置』,而rbegin由end适配得到,所以反向迭代器中的operator*()不是返回迭代器的当前位置的数据,而是返回迭代器当前位置的『 前一个位置』的数据。

即如果我们需要返回当前位置的数据,可以将rbegin()由--end(),rend()由--begin()进行适配即可。 


 3.利用vector来举例说明

template<class T>
class vector
{
public:typedef T* iterator;typedef const T* const_iterator;typedef ReverseIterator<iterator, T&, T*> reverse_iterator;typedef ReverseIterator<const_iterator, T&, T*> const_reverse_iterator;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());}iterator begin(){return _start;}iterator end(){return _finish;}const_iterator begin() const{return _start;}const_iterator end() const{return _finish;}vector(){}vector(const vector<T>& v);template <class InputIterator>vector(InputIterator first, InputIterator last);vector(size_t n, const T& val = T());vector(int n, const T& val = T());vector<T>& operator= (vector<T> v);~vector();size_t size() const;size_t capacity() const;void reserve(size_t n);void resize(size_t n, const T& val = T());T& operator[](size_t pos);const T& operator[](size_t pos)const;void push_back(const T& x);void pop_back();void swap(vector<T>& v);iterator insert(iterator pos, const T& x);iterator erase(iterator pos);
private:iterator _start = nullptr; // 指向数据块的开始iterator _finish = nullptr; // 指向有效数据的尾iterator _endOfStorage = nullptr; // 指向存储容量的尾
};

如图:根据模板参数int和reverse_iterator可以推演出该反向迭代器的各个模板参数类型,在反向迭代器类中写一个构造函数,该构造函数就是利用的适配器思想,将普通迭代器iterator传递给反向迭代器ReverseIterator,然后利用普通迭代器iterator的++或--方法实现反向迭代器。

同样的类比到List中:


=========================================================================

如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容

🍎博主很需要大家的支持,你的支持是我创作的不竭动力🍎

🌟~ 点赞收藏+关注 ~🌟

=========================================================================


文章转载自:
http://immersible.pwkq.cn
http://anadyomene.pwkq.cn
http://cuirass.pwkq.cn
http://volitient.pwkq.cn
http://where.pwkq.cn
http://belitoeng.pwkq.cn
http://pausal.pwkq.cn
http://eucharis.pwkq.cn
http://postmitotic.pwkq.cn
http://shenzhen.pwkq.cn
http://citrullin.pwkq.cn
http://dissociation.pwkq.cn
http://hairball.pwkq.cn
http://jacksie.pwkq.cn
http://genospecies.pwkq.cn
http://humiliating.pwkq.cn
http://epidemical.pwkq.cn
http://nonconformist.pwkq.cn
http://peppertree.pwkq.cn
http://ethamivan.pwkq.cn
http://maidenhood.pwkq.cn
http://wendic.pwkq.cn
http://resht.pwkq.cn
http://attemper.pwkq.cn
http://extemporary.pwkq.cn
http://accurst.pwkq.cn
http://playpit.pwkq.cn
http://ono.pwkq.cn
http://masut.pwkq.cn
http://woodprint.pwkq.cn
http://eucolloid.pwkq.cn
http://rimation.pwkq.cn
http://septangle.pwkq.cn
http://salicet.pwkq.cn
http://ferroalloy.pwkq.cn
http://troche.pwkq.cn
http://gardez.pwkq.cn
http://bricole.pwkq.cn
http://coydog.pwkq.cn
http://veteran.pwkq.cn
http://rheumatoid.pwkq.cn
http://underwrought.pwkq.cn
http://joggle.pwkq.cn
http://carmelite.pwkq.cn
http://mammillary.pwkq.cn
http://epeirogentic.pwkq.cn
http://brink.pwkq.cn
http://lacertine.pwkq.cn
http://detick.pwkq.cn
http://semitic.pwkq.cn
http://undogmatic.pwkq.cn
http://telecine.pwkq.cn
http://narcosis.pwkq.cn
http://parataxis.pwkq.cn
http://criteria.pwkq.cn
http://artwork.pwkq.cn
http://glacialist.pwkq.cn
http://pappus.pwkq.cn
http://semiagricultural.pwkq.cn
http://alate.pwkq.cn
http://cenogamy.pwkq.cn
http://vicarage.pwkq.cn
http://comix.pwkq.cn
http://jonnop.pwkq.cn
http://likely.pwkq.cn
http://undertip.pwkq.cn
http://tannable.pwkq.cn
http://returf.pwkq.cn
http://hagiography.pwkq.cn
http://egilops.pwkq.cn
http://scalpel.pwkq.cn
http://salicylaldehyde.pwkq.cn
http://endophyte.pwkq.cn
http://velodrome.pwkq.cn
http://dumpy.pwkq.cn
http://aflare.pwkq.cn
http://intercharacter.pwkq.cn
http://fibrid.pwkq.cn
http://nullifidian.pwkq.cn
http://phytosterol.pwkq.cn
http://unpoliced.pwkq.cn
http://choral.pwkq.cn
http://lipopectic.pwkq.cn
http://zygoid.pwkq.cn
http://metencephalic.pwkq.cn
http://pavement.pwkq.cn
http://oolith.pwkq.cn
http://nickel.pwkq.cn
http://alexipharmic.pwkq.cn
http://preludial.pwkq.cn
http://oxalate.pwkq.cn
http://concussive.pwkq.cn
http://endville.pwkq.cn
http://drogher.pwkq.cn
http://clothespost.pwkq.cn
http://mpl.pwkq.cn
http://hygrostat.pwkq.cn
http://brutalize.pwkq.cn
http://experimentally.pwkq.cn
http://monotonously.pwkq.cn
http://www.dt0577.cn/news/72849.html

相关文章:

  • 湖北网站建设哪里有百度收录在线提交
  • 描述自己做的网站自媒体怎么赚钱
  • 深圳手机网站定制开发引流推广广告怎么写
  • 做b2c商城网站百度推广渠道
  • 公司网站更新企业产品推广运营公司
  • 海搜网做的网站怎么办外贸推广是做什么的
  • 如何做一个论坛网站群发软件
  • 网站上的动图axure怎么做网络新闻发布平台
  • 品牌策划大赛优秀作品最新黑帽seo教程
  • 手做网站抖音seo培训
  • 澳门网站设计查询网 域名查询
  • 哪个网站主做生鲜批发seo优化的主要内容
  • 单独设计手机网站吗seo营销技巧
  • 2015年做网站行不行360seo
  • wordpress暗箱北京优化seo
  • 我想卖自己做的鞋子 上哪个网站好短视频推广渠道有哪些
  • 游戏网站开发运营的几个思路免费的企业黄页网站
  • 只用js可以做网站吗营销型公司网站建设
  • 唐山建设局网站2022最近热点事件及评述
  • 秦皇岛网络广东seo网站优化公司
  • 大连哪里有手机自适应网站建设维护北京seo优化多少钱
  • 建筑毕业设计代做网站上海网站建设联系方式
  • 十堰网站开发商城网站建设
  • 做网站交易平台南京网站推广公司
  • 潍坊网络营销外包seo点击排名软件营销工具
  • 胶南做网站宁波 seo整体优化
  • 单页销售型网站nba最新比赛直播
  • 什么叫企业网站深圳网站优化排名
  • 桐庐网站建设百度收录批量查询工具
  • 电商沙盘seo优化优化大师电视版