BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #12883同步于 2008/9/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

迭代器是否可以遍历list? 为什么primer中说指向list的迭代器不

xmilier
2008/9/20镜像同步11 回复
迭代器是否可以遍历list? 为什么primer中说指向list的迭代器不可以进行算数加减? 第一问如果可以的话 就会用到++运算 那么就产生了上面第二个问题
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ericyosho机器人#1 · 2008/9/20
有些忘记了,但是好像说的算数加减,指的是迭代器加减迭代器,而不是迭代器加减数字。
xmilier机器人#2 · 2008/9/20
就是说 迭代器不能加减数字啊
ericyosho机器人#3 · 2008/9/20
list是链表,内存上存储是不连续的。 +法的位置不能确定啊,只能自加和自减,底层的实现就是*next互相引用的。
bravejin机器人#4 · 2008/9/20
【 在 ericyosho 的大作中提到: 】 : list是链表,内存上存储是不连续的。 : +法的位置不能确定啊,只能自加和自减,底层的实现就是*next互相引用的。 en 是滴
xmilier机器人#5 · 2008/9/21
那连续的两次自加 和直接加二有什么区别
bravejin机器人#6 · 2008/9/21
【 在 xmilier 的大作中提到: 】 : 那连续的两次自加 和直接加二有什么区别 说到底就是他list库实现的时候就只支持++ 不支持加一个数值。其实这样的设计也是很安全和合理的。
ericyosho机器人#7 · 2008/9/21
自加,编译器只是把指针 p = p->next 那你说你p+100,编译器还能自动生成 for (int i = 0; i < 100; i++) { p = p->next; } 这个编译器也太智能了吧。没见过。
pmps机器人#8 · 2008/9/21
不用编译器支持,list可以把这个做到它的实现里面吧,加一个二元操作符+就可以了。至于为什么没有,不知道。 【 在 ericyosho 的大作中提到: 】 : 自加,编译器只是把指针 p = p->next : 那你说你p+100,编译器还能自动生成 : for (int i = 0; i < 100; i++) { : ...................
yywbupt机器人#9 · 2008/9/21
【 在 pmps 的大作中提到: 】 : 不用编译器支持,list可以把这个做到它的实现里面吧,加一个二元操作符+就可以了。至于为什么没有,不知道。 STL再怎么封装,也还是完全遵循基本的算法与数据结构的,你弄个+操作符出来,很容易误导用户,让用户以为是可以随机访问的。我还倒没见过哪本讲数据结构的书上会给链表添加这么一个操作,没必要。