永发信息网
C++ 向量 迭代器不能增减?????
答案:2 悬赏:60
手机版
解决时间 2021-03-05 09:45
提问者
网友:書生途
2021-03-04 22:24
vector
::iterator vi;
vector
::iterator p;
for (vi=in_vec.begin(),p=in_vec.begin(); p!=in_vec.end()-1;p++)
{
if (*(++vi)==*p)
{
in_vec.erase(vi);
p--;
vi--;
}
}
最佳答案
五星知识达人
网友:逃夭
2021-03-04 23:44
可以++或者--,不过你的vi初始化是不是搞错了啊,是不是应该vi=in_vec.end();如果是vi=in_vec.begin(),那if条件满足时,vi--不久溢出了吗
全部回答
1楼
网友:北城痞子
2021-03-05 00:51
不要这么写 vector
no; int i; for(i=0;i<10;i++) no.push_back(i); 这时 no里的元素是 0 1 2 3 4 5 6 7 8 9 no.begin() 指向 0 no.end() 指向的位置是 9 后边的位置[值为垃圾] vector
::iterator it = no.end(); 这时 it 指向的位置是 9 后边的位置[值为垃圾] for(;it!=no.begin();--it) printf("%d ",*it); 你这样遍历 自然从 no.end() 指向的垃圾值位置开始 [值可能是0] 然后往前走 输出 0[0是垃圾值] 9 8 7 6 5 4 3 2 1 到 no.begin() 时 由于循环条件 it!=no.begin() 自然就结束循环了 输出的最后一项是 no[1] 如果 倒着遍历 vector 使用 reverse_iterator vector
no; int i; for(i=0;i<10;i++) no.push_back(i); vector
::reverse_iterator it = no.rbegin(); for(;it!=no.rend(); ++it) printf("%d ",*it);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
美丽妈妈怎么去啊,有知道地址的么
关于山的优美句子
电路的放大器有什么作用?
请求帮助,太原富士康附近哪里有出租的房屋
新威驰示宽灯保险在哪
妮维雅洗面奶好用吗?洗完脸会干吗?
罗淦早点在什么地方啊,我要过去处理事情
劳动合同到期,公司提前一个月通知不再续约,
给神舟优雅笔记本怎么装系统?麻烦详细说明,
venom snake死的时候是不是看见静静了
如图,已知三角形abc中,cd是ab边上的高;且cd的
红土地广告传媒公司地址在哪,我要去那里办事
交相辉映的同义词
一个人右手拿着书左手拿着刀上面有个绳子拴在
6-2X+6X=18. 方程怎么解啊?
推荐资讯
银手镯和金转运珠的左右手该如何佩戴?
为什么洒水车要放世上只有妈妈好的调子呢?
微信还信用卡怎么收费的
0086是什么电话,+86是哪里的号码
重庆市安监局公众信息网考试成绩查询51232219
寄海鲜最好用什么快递
大神们.跑步鞋有什么牌子比较实惠
这几道数学只列式不计算怎么做.
一建机电江山和朱建军能押上题吗
【蠹怎么读】蠹怎么读
互联网作为一种信息交流平台,给我们的生活带
30岁左右男性 择偶 以下哪个女孩子适合我
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?