两个vector数组相加迭代

namewchlp 2009-09-23 01:40:30
vector<int>::iterator add2; vector<int>::iterator add; 两个迭代器
vector<int> *result2=new vector<int>(); vector<int>result1;
...................
add2=result2->begin();carry=0;
for(add=result1.begin();add!=result1.end();++add)
{
remain=((*add)+(*add2)+carry)%10;
carry=((*add)+(*add2))/10;
(*add2)=remain;
if(add2==(result2->end())) /// 这个语句一直没 起作用 即使reult2长度不够也不会执行 是不是判断语句的错误啊
{
result2->push_back(0); // (如果 result2 长度不够 ,就给它补上。)
}
add2+=1;
}
...全文
447 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
namewchlp 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lsm164 的回复:]
问题很多:
1. add2+=1和 ++add2不是等价的,迭代器没有+=1的用法。
2.  if(add2==(result2->end()))这个判断应该前移,既然前面在使用(*add2)=remain; 就说明add2不太可能为end()了。因为end()不是vector的有效元素。
3. result2->push_back(0);之后,会导致迭代器失效,add2不能再使用了。
4. new出来的空间没有释放。

[/Quote]
1, add2+=1和 ++add2是等价的。
2. if(add2==(result2->end()))这个判断应该前移,可以判断
3,result2->push_back(0);之后,会导致迭代器失效,add2不能再使用了。 这个确实是错了的地方 谢谢
lsm164 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 namewchlp 的回复:]
1, add2+=1和 ++add2是等价的。
[/Quote]

原来这样也可以,受教了
lsm164 2009-09-23
  • 打赏
  • 举报
回复
问题很多:
1. add2+=1和 ++add2不是等价的,迭代器没有+=1的用法。
2. if(add2==(result2->end()))这个判断应该前移,既然前面在使用(*add2)=remain; 就说明add2不太可能为end()了。因为end()不是vector的有效元素。
3. result2->push_back(0);之后,会导致迭代器失效,add2不能再使用了。
4. new出来的空间没有释放。
mstlq 2009-09-23
  • 打赏
  • 举报
回复
缺++add2
Sou2012 2009-09-23
  • 打赏
  • 举报
回复
代码贴代码区

65,187

社区成员

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

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