C++ iterator 如何实现

summer_more_more_tea 2008-12-19 12:51:06
实现了一个数据结构,想写一个iterator,遇到点问题.
首先是使用内部类还是友元的问题.我之前写过另一个小程序,因为滥用友元,结果代码看上去很乱,因此我不太倾向于使用友元;但是,如果使用内部类,就只能将iterator类声明为类的public成员,要不类外边引用不到iterator类对象.之前写过Java的迭代器,因为有Iterator接口,所以总是将自定义的迭代器类声明为类的private成员内部类.C++中有没有类似于Java Iterator接口之类的东西,或者说,自定义迭代器时有没有什么类可以继承?能不能有什么方法将iterator类声明为private成元内部类--就像Java那样.
还有,我看网上说,STL中的iterator是用友元实现的,这是为什么呢?使用友元的好处在哪?
高人指点,小生谢过先.
...全文
1148 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bfhtian 2008-12-19
  • 打赏
  • 举报
回复
看看源码
星羽 2008-12-19
  • 打赏
  • 举报
回复
.......你应该先看看stl的书,看看c++ primer吧
fiyaa 2008-12-19
  • 打赏
  • 举报
回复
学习
yshuise 2008-12-19
  • 打赏
  • 举报
回复
迭代器跟是不是“有元”没有关系。
迭代器只要满足限定条件即可:如,++,--,* != 就可以了。
xuruichen 2008-12-19
  • 打赏
  • 举报
回复
顶星羽,各个容器的ITERATOR是不一样的。
具体和JAVA是否一样有iterator接口就不知道了
sffofn 2008-12-19
  • 打赏
  • 举报
回复
c++primer 给你个地址 中文的电子书
http://download.csdn.net/source/832780
sffofn 2008-12-19
  • 打赏
  • 举报
回复
c++primer 给你个地址 中文的电子书
http://download.csdn.net/source/832780
SearchLife 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Chiyer 的回复:]
不同的stl实现版本,对 iterator的实现是不一样的

比如 vc 的stl 中的vector的iterator是一个friend class

而 sgi stl 中的vector的iterator 直接是一个数据的指针成员 类似这样 typedef value_type* iterator;

还有每个容器的iterator是不一样的


一般情况下,如果你 iterator 比较复杂就不太适合定义成内部类
[/Quote]

up,我今天才明白为什么用遍历容器时用!=而不是<=
SearchLife 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Chiyer 的回复:]
不同的stl实现版本,对 iterator的实现是不一样的

比如 vc 的stl 中的vector的iterator是一个friend class

而 sgi stl 中的vector的iterator 直接是一个数据的指针成员 类似这样 typedef value_type* iterator;

还有每个容器的iterator是不一样的


一般情况下,如果你 iterator 比较复杂就不太适合定义成内部类
[/Quote]

up,我今天才明白为什么用遍历容器时用!=而不是<=
jiangheng2008 2008-12-19
  • 打赏
  • 举报
回复
学习
nullah 2008-12-19
  • 打赏
  • 举报
回复
顶星羽大哥~~~~
wiowei 2008-12-19
  • 打赏
  • 举报
回复
定义成外部类比较好,至于用友元还是指针,其实实现是差不多的,友元也是通过指针实现的。
星羽 2008-12-19
  • 打赏
  • 举报
回复
不同的stl实现版本,对 iterator的实现是不一样的

比如 vc 的stl 中的vector的iterator是一个friend class

而 sgi stl 中的vector的iterator 直接是一个数据的指针成员 类似这样 typedef value_type* iterator;

还有每个容器的iterator是不一样的


一般情况下,如果你 iterator 比较复杂就不太适合定义成内部类
threeleafzerg007 2008-12-19
  • 打赏
  • 举报
回复
http://hi.baidu.com/crash1/blog/item/90269a088a8000d562d986b3.html
Some useful information about the iterator's implementation.
内容概要:本文介绍了COSO企业风险管理框架,阐述了企业风险管理的定义、目标、构成要素及其与内部控制的关系。文章指出,企业风险管理是一个由董事会、管理层及其他人员实施的,应用于战略制定并贯穿于企业之中的过程,旨在识别可能影响主体的潜在事项,管理风险以使其在该主体的风险容量之内,并为主体目标的实现提供合理保证。该框架强调了企业风险管理的八大构成要素:内部环境、目标设定、事项识别、风险评估、风险应对、控制活动、信息与沟通、监控。此外,文章还讨论了企业风险管理的局限性,如人为判断失误、成本与效益的权衡、管理层凌驾等。 适合人群:具备一定管理学基础知识,对风险管理有兴趣的学者、企业管理人员、内部审计师及外部审计师。 使用场景及目标:①帮助组织理解并应用企业风险管理框架,以提高组织的风险管理水平;②指导企业如何通过有效的风险管理来实现其战略、经营、报告和合规目标;③为企业提供一套标准化的风险管理语言,促进内外部沟通与合作。 阅读建议:读者应结合实际案例,深入理解每个构成要素的具体应用,同时关注企业风险管理的局限性,以全面把握企业风险管理的本质。此外,建议定期回顾和更新风险管理策略,以适应不断变化的内外部环境。

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧