社区
C++ 语言
帖子详情
c++ iterator 的一个疑点
cfg_dan
2008-12-26 10:05:20
我在看《c++ primer 4rd》 ,书中似乎并没有说明iterator 的自减操作,而且在对两个迭代器比较的时候很没有用到<,<=,>,>=运算符,而我在VC6中尝试运行是OK的,我想问的是,这是编书时作者的忽略,还是这些操作的合法性并没有明确规定,或者是根据不同的编译器其合法性有所区别?
...全文
263
22
打赏
收藏
c++ iterator 的一个疑点
我在看《c++ primer 4rd》 ,书中似乎并没有说明iterator 的自减操作,而且在对两个迭代器比较的时候很没有用到<,,>=运算符,而我在VC6中尝试运行是OK的,我想问的是,这是编书时作者的忽略,还是这些操作的合法性并没有明确规定,或者是根据不同的编译器其合法性有所区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bfhtian
2008-12-28
打赏
举报
回复
双向迭代器和随机迭代器才有自减
redstorm_fyy
2008-12-28
打赏
举报
回复
书本里讲的是c++语言标准,实际的编译器对标准的支持程度是不一样的
sukekiyo
2008-12-28
打赏
举报
回复
看STL源码解析 就明天迭代器怎么工作的了
星羽
2008-12-28
打赏
举报
回复
vc6 对stl支持不好,学习stl的话还是建议用 vs2005及以上的版本,或则 g++
一元硬币
2008-12-28
打赏
举报
回复
我觉得也是,vc6比较垃圾,学c++最好还是用vi + gcc、g++,这样学出来的效果比较好
dboyback
2008-12-28
打赏
举报
回复
[Quote=引用 1 楼 taodm 的回复:]
既然自己有猜测“或者是根据不同的编译器其合法性有所区别?”就自己多装几个编译器试呀。
学C++阶段,计算机上怎么也要装3~4种编译器。当然,VC6可以直接扔了。
[/Quote]
。。。。
写出在一种编译器上可以跑其他编译器上不能跑的程序是好事?尽量还是避免不确定性。
而且这个问题怎么可能是编译器的问题。
微软的STL实现里面_Vector_const_iterator根本就重载了>和<操作符,所以这里是调用了>/<操作符的,跟编译器和C++规范无关
liliflashfly
2008-12-27
打赏
举报
回复
迭代器,有很多种。。。每一种的层次又不一样,比如对输入和输出两种迭起的要求就最少,这涉及到了iterator的抽象层次和概念问题,建议阅读《泛型编程和STL》的第二章,关于五种迭代器讲得很详细,其实它的part1都是关于泛型的理论的,看了很有收获~
至于VC6,太老了,对很多C++支持得不标准,VS2008不错,其实dev-C++最好,可惜缩进太差了...
DLevel
2008-12-27
打赏
举报
回复
vector<int> s;
for(vector<int>::size_type i=0;i<4;i++)
s.push_back(i);
for(vector<int>::iterator ptint=s.end()-1;ptint>s.begin();ptint--)
cout<<*ptint<<endl;
system("PAUSE");
return 0;
xuruichen
2008-12-26
打赏
举报
回复
大哥你妹看好吧,
4TH中有迭代器--的例子
DLevel
2008-12-26
打赏
举报
回复
[Quote=引用 1 楼 taodm 的回复:]
既然自己有猜测“或者是根据不同的编译器其合法性有所区别?”就自己多装几个编译器试呀。
学C++阶段,计算机上怎么也要装3~4种编译器。当然,VC6可以直接扔了。
[/Quote]
淘大妈又出来忽悠了。
[Quote=引用 12 楼 luobonic 的回复:]
迭代器类型的不同,可以用的运算符也不同。你不用质疑stan,也不用质疑编译器,vc6也很好,首先应该问问自己,到底有没有认真看这个东西。
[/Quote]
UP
luobonic
2008-12-26
打赏
举报
回复
迭代器类型的不同,可以用的运算符也不同。你不用质疑stan,也不用质疑编译器,vc6也很好,首先应该问问自己,到底有没有认真看这个东西。
yshuise
2008-12-26
打赏
举报
回复
满足迭代器的约定就能称为迭代器,也就是可以用于stl的容器上。
而迭代器又要分种类,读入迭代器,输出迭代器,双向迭代器,随机迭代器等。
他不是指针,所以不满足所有的指针功能。而有些迭起器只是类,只是多操作符实现了重载才有类
++ -- != *等功能。实际上是没有这些的。
nullah
2008-12-26
打赏
举报
回复
[Quote=引用 1 楼 taodm 的回复:]
既然自己有猜测“或者是根据不同的编译器其合法性有所区别?”就自己多装几个编译器试呀。
学C++阶段,计算机上怎么也要装3~4种编译器。当然,VC6可以直接扔了。
[/Quote]
大妈一项不推荐VC6
呵呵
[Quote=引用 7 楼 ztz0223 的回复:]
晕,迭代器有好几种的,比如双向迭代起是可以++也可以--的,单向比如前向迭代起就只能++
呵呵
[/Quote]
up
xiaoyisnail
2008-12-26
打赏
举报
回复
用标准库容器的话还是用gcc吧
cfg_dan
2008-12-26
打赏
举报
回复
其实,我觉得没有哪本书能面面具道,实际应用才是最好的检验途径,不过还是想向各位高人寻求一种“官方解释”
就呆在云上
2008-12-26
打赏
举报
回复
晕,迭代器有好几种的,比如双向迭代起是可以++也可以--的,单向比如前向迭代起就只能++
呵呵
cfg_dan
2008-12-26
打赏
举报
回复
[Quote=引用 3 楼 sincor 的回复:]
最好自己编个编译器吧
[/Quote]
你是个强人 ,希望有一天我能和你一样强。
cfg_dan
2008-12-26
打赏
举报
回复
[Quote=引用 2 楼 yutaooo 的回复:]
c++ primer 4rd 主要还是讲语言,STL库方面的不可能面面俱到。
C++ Standard Library - The A Tutorial and Reference 这本是STL库方面最好的,你参考下咯。
[/Quote]
谢谢
cfg_dan
2008-12-26
打赏
举报
回复
为什么说VC6可以扔了??
sincor
2008-12-26
打赏
举报
回复
最好自己编个编译器吧
加载更多回复(2)
C++
迭代器
iterator
详解
本文深入解析
C++
中的迭代器概念,包括其在容器遍历中的应用、迭代器的实现原理、迭代器失效问题及解决策略。同时,介绍了const_
iterator
、reverse_
iterator
以及插入型迭代器和流迭代器的使用,帮助读者全面掌握迭代器的高级用法。
Effective Modern
C++
条款13:优先考虑const_
iterator
而非
iterator
本文围绕
C++
中应优先使用const_
iterator
而非
iterator
展开。介绍了const_
iterator
本质,分析
C++
98中使用困境,阐述
C++
11的改进,给出通用代码最佳实践,列举实际应用场景,考量性能,提及现代
C++
的进一步支持,最后给出总结建议。
C++
STL为什么要有const_
iterator
本文详细解析了
C++
中
iterator
、const_
iterator
及const
iterator
的区别与应用场景,通过具体示例帮助理解不同迭代器类型的功能特性。
C++
中vector章节
iterator
与const_
iterator
及const
iterator
区别
本文详细介绍了
C++
中迭代器与const_
iterator
的使用和区别。const_
iterator
用于只读访问容器元素,不可修改元素值,而
iterator
则允许修改。在const容器上,只能使用const_
iterator
,但const_
iterator
在初始化后不能改变指向,限制了其灵活性。理解这两种迭代器的差异对于高效且安全地遍历
C++
容器至关重要。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章