2 zj15939317693 zj15939317693 于 2016.09.20 21:18 提问

用vector时最后输出正确没有报错但却出现 Debug assertion failed

题目是:将若干个整数输入vector容器,用迭代器将相邻的两个元素之和输出。
下面是代码:
图片说明
当没有输入和输入的数字个数为奇数时,都有正确结果并且不会出现Debug assertion failed,如图:
图片说明
图片说明
但是当输入数字个数为偶数时,虽然有正确的结果输出,但是伴随有Debug assertion failed的出现,如图:
图片说明
是else 后面的偶数语句中超出了vector的范围导致的么?请大家帮忙指出错误和出现Debug assertion failed这类情况的解决办法,谢谢大家!

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.09.20 21:28
已采纳

因为你for循环中有it+1。而判断条件是不等于end。所以当it达到end前面一个元素时。it+1会有问题

zj15939317693
zj15939317693 end指向尾元素的下一个位置,超出了范围,而end-1其实是指向vector的最后一个元素的迭代器,可以这么理解么?
大约一年之前 回复
zj15939317693
zj15939317693 对的,我把循环的判断条件改成end-1就没有debug了;
大约一年之前 回复
caozhy
caozhy   Ds   Rxr 2016.09.20 21:25

it != end
这个修改为it < end

zj15939317693
zj15939317693 回复caozhy: 对的
大约一年之前 回复
caozhy
caozhy 回复zj15939317693: it < end - 1
大约一年之前 回复
zj15939317693
zj15939317693 回复caozhy: 试过了,还是出现debug assertion failed
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片