iterator

zhouqing19871024 2008-10-12 04:52:57
vector<int>::iterator iter=vec.begin(); 其中的iter到底是指向向量vec中首元素的指针还是就是一个普通的变量啊 ??
...全文
138 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
insulted 2008-10-14
  • 打赏
  • 举报
回复
学习!
dss0204 2008-10-12
  • 打赏
  • 举报
回复
iterator 象指针但是绝对不是指针
vs2005之后 iterator it = NULL; 编译已经不能通过了

使用的时候和指针类似

它也有自己的成员,准确的说是一个结构,可以看看stl源码
n_yHHy_n 2008-10-12
  • 打赏
  • 举报
回复
迭代器,类似于指针
elegant87 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
iter一个普通的变量, 初始化是指向向量vec中首元素的指针

你也可以改变他的值。

iter++;
这个时候他就不是指向首元素的指针了
[/Quote]

itertor 是个迭代器类型!
blueskywind6 2008-10-12
  • 打赏
  • 举报
回复
迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。

迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取数据。你还可以使用其他数学操作符如++。典型的,++操作符用来递增迭代器,以访问容器中的下一个对象。如果迭代器到达了容器中的最后一个元素的后面,则迭代器变成past-the-end值。使用一个past-the-end值得指针来访问对象是非法的,就好像使用NULL或为初始化的指针一样。

jia_xiaoxin 2008-10-12
  • 打赏
  • 举报
回复
一般来说iterator是一个"轻量级"的对象,你可以把它想象成一个指针,但不要把它当成一个指针,因为首先你不能用类型转换把它转换成一个指针,
在vector容器的内部它的实现就是一个指针,
list的iterator是__list_iterator的typedef。__list_iterator是定义list iterator的class, 所以iterator不是pointer,它只是一个object,iterator的*、->、++、--都是operator overloading做出來的,而不是pointer本身的操作。
mars_man 2008-10-12
  • 打赏
  • 举报
回复
你只能把它当成一个位置引用,因为具体怎么搞的谁也没有规定,只规定了怎么用
大写的池 2008-10-12
  • 打赏
  • 举报
回复
iterator 是一个类
chlaws 2008-10-12
  • 打赏
  • 举报
回复
你要不知道就当它是指针吧 ,这样容易理解些
yshuise 2008-10-12
  • 打赏
  • 举报
回复
vector迭代器不是类,其他的,list ,map 等都是。
fibbery 2008-10-12
  • 打赏
  • 举报
回复
星羽 2008-10-12
  • 打赏
  • 举报
回复
iter 只是一个类的实例,具体里面是怎么实现迭代的,和不同的迭代器有关

建议你看看c++ primer
chenzhp 2008-10-12
  • 打赏
  • 举报
回复
指向首元素的指针
kkndciapp 2008-10-12
  • 打赏
  • 举报
回复
iter是个指针一样,它可以指向其他值
zhouqing19871024 2008-10-12
  • 打赏
  • 举报
回复
晕了 怎么会都有 呢 ??????
yshuise 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhouqing19871024 的帖子:]
vector <int>::iterator iter=vec.begin(); 其中的iter到底是指向向量vec中首元素的指针还是就是一个普通的变量啊 ??
[/Quote]
都有
wuyu637 2008-10-12
  • 打赏
  • 举报
回复
iter一个普通的变量, 初始化是指向向量vec中首元素的指针

你也可以改变他的值。

iter++;
这个时候他就不是指向首元素的指针了

65,210

社区成员

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

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