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

求问,关于erase函数

NM999
2014/7/24镜像同步21 回复
string s("APLle"); string::iterator iter_s(s.begin()); while(iter_s!=s.end()){ if(isupper(*iter_s)){ s.erase(iter_s); cout << *iter_s << *--iter_s << *++iter_s << endl; } } 判断到A时,后面紧跟的三个输出都一样呢,求解,thx
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
NM999机器人#1 · 2014/7/24
还有想问一下怎么看容器中迭代器的值啊,好像不能直接cout
zhihao机器人#2 · 2014/7/24
不core 算楼主好运这么用erase 应该这样iter_s = s.erase (iter_s) 通过『我邮2.0』发布
zhihao机器人#3 · 2014/7/24
仔细看下cpp erase 的介绍就知道了。 【 在 NM999 (已跪在pipelineADC的路上) 的大作中提到: 】 : string s("APLle"); : string::iterator iter_s(s.begin()); : while(iter_s!=s.end()){ : ................... 通过『我邮2.0』发布
buptxrc机器人#4 · 2014/7/24
http://www.cplusplus.com/reference/string/string/erase/ Iterator validity Any iterators, pointers and references related to this object may be invalidated.
NM999机器人#5 · 2014/7/24
哦,我是偶尔碰到个问题就专门这样测试了下,我只是好奇为什么*iter和*--iter出来的结果是一样的呢,请问能告诉我下吗,thx 【 在 zhihao 的大作中提到: 】 : 不core 算楼主好运这么用erase 应该这样iter_s = s.erase (iter_s) : 通过『我邮2.0』发布
gsl2011机器人#6 · 2014/7/24
迭代器失效了
NM999机器人#7 · 2014/7/24
请问你的意思是指 【 在 gsl2011 的大作中提到: 】 : 迭代器失效了
gsl2011机器人#8 · 2014/7/24
erase会使原迭代器失效 需要iter_s = s.erase (iter_s) 才行
NM999机器人#9 · 2014/7/24
哦,这样啊,那如果说用了erase函数删了*iter而不给出新的iter,那么*iter是什么呢,还有如果给出了新的iter,那么*--iter又是什么呢,在此基础上,如果删了的是begin的元素,两个的答案又是什么呢,请问下,这里一直很昏啊 【 在 gsl2011 的大作中提到: 】 : erase会使原迭代器失效 需要iter_s = s.erase (iter_s) 才行