c++ iterator 的一个疑点

cfg_dan 2008-12-26 10:05:20
我在看《c++ primer 4rd》 ,书中似乎并没有说明iterator 的自减操作,而且在对两个迭代器比较的时候很没有用到<,<=,>,>=运算符,而我在VC6中尝试运行是OK的,我想问的是,这是编书时作者的忽略,还是这些操作的合法性并没有明确规定,或者是根据不同的编译器其合法性有所区别?
...全文
263 22 打赏 收藏 转发到动态 举报
写回复
用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)

65,210

社区成员

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

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