C++迭代器iterator遍历
1|0iterator是通用的遍历容器的方式
通用模板
四种迭代器
-
正向迭代器,定义方法如下:
容器类名::iterator 迭代器名; -
常量正向迭代器,定义方法如下:
容器类名::const_iterator 迭代器名; -
反向迭代器,定义方法如下:
容器类名::reverse_iterator 迭代器名; -
常量反向迭代器,定义方法如下:
容器类名::const_reverse_iterator 迭代器名;
功能分类
-
正向迭代器。假设 p 是一个正向迭代器,则 p 支持以下操作:++p,p++,*p。此外,两个正向迭代器可以互相赋值,还可以用==和!=运算符进行比较。
-
双向迭代器。双向迭代器具有正向迭代器的全部功能。除此之外,若 p 是一个双向迭代器,则--p和p--都是有定义的。--p使得 p 朝和++p相反的方向移动。
-
随机访问迭代器。随机访问迭代器具有双向迭代器的全部功能。若 p 是一个随机访问迭代器,i 是一个整型变量或常量,则 p 还支持以下操作:
p+=i
:使得 p 往后移动 i 个元素。
p-=i
:使得 p 往前移动 i 个元素。
p+i
:返回 p 后面第 i 个元素的迭代器。
p-i
:返回 p 前面第 i 个元素的迭代器。
p[i]
:返回 p 后面第 i 个元素的引用。此外,两个随机访问迭代器 p1、p2 还可以用 <、>、<=、>= 运算符进行比较。p1<p2的含义是:p1 经过若干次(至少一次)++操作后,就会等于 p2。其他比较方式的含义与此类似。
对于两个随机访问迭代器 p1、p2,表达式p2-p1也是有定义的,其返回值是 p2 所指向元素和 p1 所指向元素的序号之差(也可以说是 p2 和 p1 之间的元素个数减一)。
不同容器的迭代器的功能
容器 迭代器功能 vector 随机访问 deque 随机访问 list 双向 set / multiset 双向 map / multimap 双向 stack 不支持迭代器 queue 不支持迭代器 priority_queue 不支持迭代器
对于双向访问容器
-
取双向链表节点的前驱和后继
-
-
将迭代器前进(或者后退)指定长度的距离
-
__EOF__

本文链接:https://www.cnblogs.com/kdlyh/p/17782879.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下