当前焦点!7 迭代器(下)
本项目GitHub:HuangCheng72/HCSTL: 我的STL实现 (github.com): https://github.com/HuangCheng72/HCSTL
(相关资料图)
进入正文。
在上一篇中,我们提到:
我们希望迭代器最好能像指针一样,可以通过*来读写数据,可以++,--,或者p += 3 ,p -= 4 之类的操作来移动,还可以通过两个迭代器相减计算两个迭代器之间的距离(最好同样用指针相减的结果ptrdiff_t类型表示,当然你非得用其他也行)等等。
这就需要运用C++的重载机制,在迭代器中重载这些运算符。
我们尝试用结构体封装 list 的结点,制作一个符合标准的迭代器。
list 的结点原型如下:
list 是双向链表,所以迭代器应该是双向迭代器,因此 Category 应为 bidirectional_iterator_tag 。
因此设计原型和具体实现有:
封装之后嵌入到 list 具体实现中,在 list 的内部实现中,凡是返回结点的,一律改为返回迭代器,如果不对外暴露,则保持以结点指针为基础实现。(原则,对外部暴露迭代器,对内部可以依然采用指针实现)。
整理代码如下:
main.cpp,简单测试一下,能否使用迭代器取值。
顺利运行并输出正确结果。
对于vector则不太一样,因为vector的迭代器就是其原生指针(没有比原生指针更好用的迭代器了),所以直接指定原生指针为迭代器即可。
vector.h
我们建立一个新的 algorithm.h 头文件,在其中实现 for_each 算法:
在main.cpp中测试
可以看到均正常输出,且输出相同。
欢迎访问本项目的GitHub仓库,如果对您有帮助,麻烦给项目一个star,谢谢!
HuangCheng72/HCSTL: 我的STL实现 (github.com): https://github.com/HuangCheng72/HCSTL
当前焦点!7 迭代器(下)
本项目GitHub:HuangCheng72 HCSTL:我的STL实现(github com):https: github com HuangCheng72 HCSTL进入正文。在上一篇中,我们提到:我们希
2023-03-07痒痒痒,太难熬!入春后皮肤剧烈瘙痒,不一定是过敏_当前快报
时值阳春三月,气温回暖,万物复苏,到处都是生机勃勃的景象。此时,空气中的粉尘、花粉、细菌等也随之活跃起来,一些过敏体质和
2023-03-06冒险岛怎么刷金币
冒险岛刷金币的方法有:1、冒险岛举行周年活动时,换一些可以交易并且值钱的东西来卖,例如帽子、披风等全职业通用的装备,也可以选择换好卷或
2023-03-06博力威: 广东博力威科技股份有限公司关于变更保荐代表人的公告-环球报资讯
博力威:广东博力威科技股份有限公司关于变更保荐代表人的公告
2023-03-06腐乳的制作方法步骤
1、食材:豆腐块适量、卤汤适量、食盐适量。2、将豆腐块平放在笼屉内,将笼屉内的温度控制在16摄氏度左右,并保持一定的湿度。七天后即可取出
2023-03-06世界看热讯:奥诗娜是哪个国家的品牌啊_奥诗娜是哪个国家的品牌
1、【导读】:奥诗娜Ausalla奥诗娜Ausalla,是根据天然、纯净、健康的理念,采用澳大利亚天然原料,不断推陈出
2023-03-06电影饺子
1、《饺子》是由陈果导演。2、杨千嬅、白灵、梁家辉、杨爱瑾主演的影片。3、于2004年8月19日上映。本文到此结束,希望
2023-03-06环球快看:迪庆州残联开展“全国爱耳日”宣传教育暨学雷锋志愿服务活动
近日,迪庆州残疾人联合会在独克宗古城月光广场开展以“科学爱耳护耳,实现主动健康”为主题的第24个“全国爱耳日”活动。活动
2023-03-06死亡搁浅:导演剪辑版 DEATH STRANDING DIRECTOR’S CUT v1.002 破解中文版
《死亡搁浅:导演剪辑版》破解版在保留原版游戏内容的基础上,追加了新的战斗和探索区域,也对任务、迷你游戏和剧情进行了扩展,加入了同行机
2023-03-06英格兰和苏格兰是什么关系
1、英格兰和苏格兰同属于大不列颠及北爱尔兰联合王国。2、大不列颠及北爱尔兰联合王国(UnitedKingdomofGreatBritainandNo
2023-03-06X 关闭
X 关闭