项目场景:
使用迭代器实现输出vector对象中,第一个和最后一个的和,第二个和倒数第二个的和,以此类推
问题描述:
代码如下:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
vector<int> val(a, a + 10);
auto first = val.begin();
auto last = val.end()-1;
for (; *first != *last;)
{
cout << *first + *last << endl;
first++;
last--;
}
}
编译通过,显示错误信息:

原因分析:
我在这里没注意first小于last时候并没有停止循环,导致了last–,减到头了,所以程序无法运行下去。
解决方案:
更改判定条件即可
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a[10] = { 1,2,3,4,5,5,4,3,2,1 };
vector<int> val(a, a + 10);
auto first = val.begin();
auto last = val.end()-1;
for (; first < last; first++)
{
last--;
cout << *first + *last << endl;
}
}
在项目中使用迭代器遍历vector并计算相邻元素之和时,遇到编译通过但运行出错的问题。原因是循环条件设置不当,导致迭代器在last达到begin之前继续递减,引发错误。解决方案是修正循环判定条件,避免在first小于last时继续执行last--。
1154

被折叠的 条评论
为什么被折叠?



