社区
Web 开发
帖子详情
关于iterator?!
jackjack123123123
2010-10-12 02:40:03
listIterator一开始究竟指向容器的哪个元素。在一开始时候调用nextIndex()返回的是0,previousIndex()返回的是-1,那此时的指针究竟指向哪里?如果先调用next()然后再调用previous()返回的都是同一个元素?为什么的呢?
...全文
157
3
打赏
收藏
关于iterator?!
listIterator一开始究竟指向容器的哪个元素。在一开始时候调用nextIndex()返回的是0,previousIndex()返回的是-1,那此时的指针究竟指向哪里?如果先调用next()然后再调用previous()返回的都是同一个元素?为什么的呢?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wypbt1032
2010-10-12
打赏
举报
回复
[Quote=引用 1 楼 wypbt1032 的回复:]
listIterator一开始不指向具体的元素;所以调用nextIndex()返回的是0,previousIndex()返回的是-1;如果直接调previous(),就会发出NoSuchElementException异常,next()返回下一个元素,previous()返回当前指向的元素,先调用next()然后再调用previous()返回的都是同一个元素,例如刚开始用next后返回下标是0的……
[/Quote]
不好意思,回答错误!
listIterator的指针不指向具体的元素,而是在元素的中间!
previous和next正好相反
next()返回下一个元素,并且指针向后移一位;
previous()返回上一个元素,指针向后移一位;
wypbt1032
2010-10-12
打赏
举报
回复
listIterator一开始不指向具体的元素;所以调用nextIndex()返回的是0,previousIndex()返回的是-1;如果直接调previous(),就会发出NoSuchElementException异常,next()返回下一个元素,previous()返回当前指向的元素,先调用next()然后再调用previous()返回的都是同一个元素,例如刚开始用next后返回下标是0的元素,并且listIterator指针向后移,指向下标为0的元素,这时用previous返回下标0的元素,所以返回了一样的元素;
next()返回下一个元素,并且指针向后移一位;
previous()返回当前元素,指针不动;
不同的地方在next会使指针先向后移,在返回指向的元素;
条款13:优先选用const_
iterator
,而非
iterator
摘要:优先选用const_
iterator
的实践指南 在STL中,const_
iterator
(指向不可修改元素的迭代器)比普通
iterator
更安全、更清晰地表达“只读”意图。C++98中由于支持不足(创建困难、使用受限),其优势难以发挥;但C++11通过cbegin()/cend()等成员函数和非成员函数std::begin()显著改善了可用性。 核心建议: 默认使用const_
iterator
:除非需要修改元素,否则优先选择它以避免意外修改,增强代码安全性。 C++11/14优化:利用非成员函数(如s
const
iterator
和 const_
iterator
的区别
清晰明了 const
iterator
和 const_
iterator
的区别
iterator
与const_
iterator
转载自:https://blog.csdn.net/major_zhang/article/details/52117608 所有的标准库容器都定义了相应的迭代器类型。迭代器对所有的容器都适用,现代 C++ 程序更倾向于使用迭代器而不是下标操作访问容器元素。 1.
iterator
,const_
iterator
作用:遍历容器内的元素,并访问这些元素的值。
iterator
可以改元素值,但const...
Iterator
使用于List等集合
迭代器(
Iterator
) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的
Iterator
功能比较简单,并且只能单向移动: (1) 使用方法
iterator
()要求容器返回一个
Iterator
。第一次调用
Iterator
的next()方法时,它返回序列的第一...
经常忘记
iterator
的使用,贴上源码方便回忆
//
iterator
standard header #pragma once #ifndef _
ITERATOR
_ #define _
ITERATOR
_ #ifndef RC_INVOKED #include #include #pragma pack(push,_CRT_PACKING) #pragma warning(push,3) _STD_BEGIN /
Web 开发
81,108
社区成员
341,721
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章