我想我得到了一个向量溢出。(?)但是我不知道如何解决它。我试图完成的练习陈述如下:
练习3.20第1部分:将一组整数读入向量。打印每对相邻元素的总和。
运行时错误的位置:
for (int sum; v1 < ivec.size();++v1){ //executes for statement as long as v1 < ivec.size() is true.
sum = ivec[v1] + ivec[v1 + 1]; // same as sum = ivec[0] + ivec[1].
cout << sum << endl; sum = 0; // prints the result of sum = ivec[v1] + ivec[v1 + 1].
整个计划的代码如下。
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> ivec;
decltype (ivec.size()) v1 = 0;
unsigned int i1 = 0;
while (cin >> i1){ ivec.push_back(i1);} // receive input and stores into ivec.
for (int sum; v1 < ivec.size();++v1){ //executes for statement as long as v1 < ivec.size() is true.
sum = ivec[v1] + ivec[v1 + 1]; // same as sum = ivec[0] + ivec[1], v1 is now = 1.
cout << sum << endl; sum = 0; // prints the result of sum = ivec[v1] + ivec[v1 + 1].
}
system("pause");
return 0;
}
答案 0 :(得分:0)
问题在于,您将在最后一次迭代中读取矢量结尾的一个。这是因为您在循环中访问ivec [v1 + 1],但允许v1作为最后一个元素的索引。
您可以通过将循环条件更改为(v1&lt; ivec.size() - 1)来解决此问题。