c++问题请教高手

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:45:15
#include<vector>
#include<iostream>
using namespace std;

int main()
{
int a[7]={0,1,2,3,4,5,6};
vector<int> b(a,a+7);
for(int i=0;i<7;)
{
b[i]+=b[++i];
b.erase(&b[i]);
i=0;
}
getchar();
return 0;
}
我想输出21,老是出错,怎么回事?

1:for(int i=0;i<7;)
2:{
3: b[i]+=b[++i];
4: b.erase(&b[i]);
5: i=0;
6:}

第5行i=0使for成死循环, 当循环6次后b 中只剩下一个元素21, 这时第3行b[i]+=b[++i]; 即b[0] += b[1]就越界啦
可改成
for(int i=0;i<7;)
{
if (b.size() == 1)break;
b[i]+=b[++i];
b.erase(&b[i]);
i=0;
}