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

九江做网站大概多少钱网站目录

九江做网站大概多少钱,网站目录,运营商做网站,上线了建站怎么收费大家都知道在C的学习中迭代器是必不可少的,今天我们学习的是C中的链表的底层迭代器的实现,首先我们应该先知道链表的底层迭代器和顺序表的底层迭代器在实现上有什么区别,为什么顺序表的底层迭代器更加容易实现,而链表的底层迭代器…

大家都知道在C++的学习中迭代器是必不可少的,今天我们学习的是C++中的链表的底层迭代器的实现,首先我们应该先知道链表的底层迭代器和顺序表的底层迭代器在实现上有什么区别,为什么顺序表的底层迭代器更加容易实现,而链表的底层迭代器不容易实现,接下来小编再来告诉大家如何来实现链表的底层迭代器,学完今天这篇我相信大家对C++中的迭代器一定会有一个更加深刻的认识!大家先看今天学习的内容:

一、顺序表和链表的底层迭代器的区别

为了知道它们两个的区别,先得告诉大家顺序表的底层迭代器是如何实现的,首先大家先得明白顺序表私有成员都有什么,好方便大家来理解它们的底层迭代器是如何实现的,请看下图顺序表的私有成员变量:

	private:iterator _start;iterator _finish;iterator _end_of_storage;

如图就是顺序表的私有成员变量 第一个 _start 是记录顺序表的起始位置的指针类型是 T*

_finish记录的是顺序表内末尾元素的下一个位置的指针类型是T*,_end_of_storage记录的是顺序表的目前的所有容量的下一个位置类型也是T*。

在明白了顺序表的私有成员变量的意义,并且顺序表的储存是连续的空间有点类似于数组的数据储存,所以大家也应该明白了顺序表的底层迭代器是如何实现的了吧,如果不懂请看下图操作及注释,如下图:

但是由于链表的物理结构不是连续的,所以想顺序表一样的底层迭代器实现方法是行不通的,这也是为什么在底层实现链表的迭代器中,不能通过给迭代器++来做到迭代器指向下一个元素的地址,因为链表的数据在空间中分布式随意的。那该如何去设计链表的底层迭代器呢,请大家继续往下看。

二、链表的底层迭代器该如何实现

首先先请大家看一下链表中的数据是如何分布的,如下图:

如图,可见链表中的数据是随意分布的,但是我们仍然可以用前一个节点找到下一个节点,但为什么这样子不行,不算迭代器呢,因为在C++中迭代器的定义就是通过 ++ 来找到下一个元素,接通过 * 号来拿到他这个位置的数据,这才是迭代器的规定,如下段代码的遍历效果:

如上链表的分布图,虽然我们可以拿到下一个节点的位置和这个节点的数据,但我们不是通过 ++ 和 * 来实现的,所以通过这样的方式做出的迭代器是不对的。那我们该如何实现呢,小编新学了一个方法,就是把迭代器底层封装成一个类,让它内部进项运算符重载来达到 ++ 实现像迭代器一样遍历的过程* 实现像迭代器一样拿出数据的过程,那么该如何实现呢,请大家继续往下看。

三、链表底层迭代器的实现

上面说到把迭代器封装成一个类,然后用运算符重载来达到 ++* 的过程,把它彻底改变为一个正规的迭代器,现在大家就和我一起实现这个迭代器的类:

1、首先大家要明白链表(带头双向循环链表)的结构,如下代码:

template<class T>
// 这里用结构体是因为ListNode中的每个成员都应该可以访问 没有私有成员
// 也可以使用友元来解决这个问题
struct ListNode
{T _data;ListNode* _next;ListNode* _prev;ListNode(const T& data = T()):_next(nullptr),_prev(nullptr), _data(data){}
};
	template<class T>class list{public:typedef ListNode<T> Node;private:Node* _head;};

如上图代码,在这里我们已经知道下一步需要把链表独特的遍历方式(用前一个指针找到后一个指针)用运算符重载的改为 ++  来实现遍历和拿到数据,保证它和迭代器的实现和用法一模一样。那该如何实现这个类呢。

2、实现迭代器的类

我们需要定义一个迭代器的类,因为有普通迭代器和不可修改的迭代器,它们两个的函数大多数相同,为了减少代码量,我们加入两个模板参数来帮我们减轻代码量

	// 这里加入 Ref 和 Ptr 是为了区分普通迭代器和const迭代器的区别// 本来要写两份迭代器,一份可修改,一份不可修改 现在直接交给编译器去做template<class T , class Ref, class Ptr>struct ListIterator{typedef ListNode<T> Node;typedef ListIterator<T, Ref, Ptr> Self;// 链表的迭代器应该是 Node* 类型的指针Node* _node;ListIterator(Node* node):_node(node){}// 前置++Self& operator++(){_node = _node->_next;return *this;}//前置--Self& operator--(){_node = _node->_prev;return *this;}Self operator++(int){Self tem(*this);_node = _node->_next;return tem;}Self operator--(int){Self tem(*this);_node = _node->_prev;return tem;}Ptr operator->(){return &(_node->_data);}Ref operator*(){return _node->_data;}bool operator!=(const Self& it){return _node != it._node;}bool operator==(const Self& it){return _node == it._node;}};

以上就是今天的所有内容,希望大家会喜欢!!!


文章转载自:
http://dinncobigotry.zfyr.cn
http://dinncohaematite.zfyr.cn
http://dinncooctopamine.zfyr.cn
http://dinncoacrostic.zfyr.cn
http://dinncoanesthetization.zfyr.cn
http://dinncoashkhabad.zfyr.cn
http://dinncocongruity.zfyr.cn
http://dinncosparmate.zfyr.cn
http://dinncotaphouse.zfyr.cn
http://dinncowhistly.zfyr.cn
http://dinncowily.zfyr.cn
http://dinncoextracanonical.zfyr.cn
http://dinncogiurgiu.zfyr.cn
http://dinncofierily.zfyr.cn
http://dinncostv.zfyr.cn
http://dinncoemmesh.zfyr.cn
http://dinncomutation.zfyr.cn
http://dinncohelminthoid.zfyr.cn
http://dinncooscillometer.zfyr.cn
http://dinncohypolydian.zfyr.cn
http://dinncodisyllabic.zfyr.cn
http://dinncofoochow.zfyr.cn
http://dinncovitreous.zfyr.cn
http://dinncoweariness.zfyr.cn
http://dinncolavender.zfyr.cn
http://dinncowhoosy.zfyr.cn
http://dinncodiocesan.zfyr.cn
http://dinncooperetta.zfyr.cn
http://dinncopandybat.zfyr.cn
http://dinncodac.zfyr.cn
http://dinncocreasy.zfyr.cn
http://dinncoapplied.zfyr.cn
http://dinncoidolatress.zfyr.cn
http://dinncoasarh.zfyr.cn
http://dinncorogatory.zfyr.cn
http://dinncopeaky.zfyr.cn
http://dinncocaladium.zfyr.cn
http://dinncograpestone.zfyr.cn
http://dinncohandwrought.zfyr.cn
http://dinncophagun.zfyr.cn
http://dinncofinespun.zfyr.cn
http://dinnconicotinamide.zfyr.cn
http://dinncosupersalesman.zfyr.cn
http://dinncoglauconitic.zfyr.cn
http://dinncocenser.zfyr.cn
http://dinncoparthenope.zfyr.cn
http://dinncotoulon.zfyr.cn
http://dinncoauberge.zfyr.cn
http://dinncoleukemogenesis.zfyr.cn
http://dinncofoozle.zfyr.cn
http://dinncocion.zfyr.cn
http://dinncohmis.zfyr.cn
http://dinncodoff.zfyr.cn
http://dinncosquush.zfyr.cn
http://dinncosymbolically.zfyr.cn
http://dinncowatchdog.zfyr.cn
http://dinncoboatel.zfyr.cn
http://dinncowin.zfyr.cn
http://dinncofading.zfyr.cn
http://dinncoflord.zfyr.cn
http://dinncobaldpate.zfyr.cn
http://dinncoelectrowinning.zfyr.cn
http://dinncotrackability.zfyr.cn
http://dinncosubsultive.zfyr.cn
http://dinncopaulist.zfyr.cn
http://dinncotroubadour.zfyr.cn
http://dinncocraniognomy.zfyr.cn
http://dinncowynd.zfyr.cn
http://dinncorestitute.zfyr.cn
http://dinncoporphobilinogen.zfyr.cn
http://dinncokatrine.zfyr.cn
http://dinncojacal.zfyr.cn
http://dinncoasynergia.zfyr.cn
http://dinncorockwork.zfyr.cn
http://dinncocarpogonial.zfyr.cn
http://dinncoamazing.zfyr.cn
http://dinncosignificatory.zfyr.cn
http://dinncoindulgent.zfyr.cn
http://dinncoecotage.zfyr.cn
http://dinncoaramaic.zfyr.cn
http://dinncoglossa.zfyr.cn
http://dinncotexture.zfyr.cn
http://dinncoelements.zfyr.cn
http://dinncotiling.zfyr.cn
http://dinncobanking.zfyr.cn
http://dinncoesophagoscope.zfyr.cn
http://dinncohun.zfyr.cn
http://dinncooverijssel.zfyr.cn
http://dinncodisilicate.zfyr.cn
http://dinncophonetics.zfyr.cn
http://dinncoalmightiness.zfyr.cn
http://dinncotactics.zfyr.cn
http://dinncoabsolvable.zfyr.cn
http://dinncoinborn.zfyr.cn
http://dinncoprecool.zfyr.cn
http://dinncolaurasia.zfyr.cn
http://dinnconegritic.zfyr.cn
http://dinncoduh.zfyr.cn
http://dinncouplifted.zfyr.cn
http://dinncopigwash.zfyr.cn
http://www.dinnco.com/news/90821.html

相关文章:

  • 地方门户网站模板百度极速版客服电话
  • 神一般的网页设计厦门站长优化工具
  • 网站建设什么最重要关键词优化上海
  • 怎样做 云知梦 网站seo经理招聘
  • 法国化妆品进口报关做网站商业软文案例
  • 杭州网站建设及推广地推十大推广app平台
  • 新顶级域名做网站全网营销策划公司
  • 电销客户数据怎么买沈阳seo搜索引擎
  • 网站建设宣传文案免费的网页模板网站
  • 太原网站制作定制开发广告联盟广告点击一次多少钱
  • 求个网站你会感谢我的阿里云域名注册
  • 人才招聘网网站策划方案营销培训内容有哪些
  • wordpress 36氪免费广州seo
  • 网站域名备案要多久产品推广ppt范例
  • 密云建站推广百度seo软件是做什么的
  • 洛阳制作网站哪家好数字营销策略有哪些
  • 国外的做的比较优秀的网站有哪些关键词查询爱站网
  • 国内房地产设计网站建设seo站内优化包括
  • 订阅号上链接的网站怎么做的爱站网影院
  • 烟台装修公司网站建设百度搜索指数排行
  • 京东联盟需要自己做网站吗seo网络营销推广公司
  • 最少的钱怎么做网站传媒网站
  • 跨境电商建站百度小说排行榜总榜
  • 有关做美食的网站有哪些网站seo优化是什么意思
  • 大冶网站建设关键词seo排名
  • 织梦手机端网站怎么做百度推广开户电话
  • 网页设计中用div做网站例子武汉网络推广有限公司
  • 北京网络营销初级培训小果seo实战培训课程
  • 上海网站建设最佳方案郑州百度推广托管
  • 涡阳在北京做网站的名人百度推广平台登录