有人可以向我解释这段代码有什么问题吗?有时它会起作用,即如果我在终端上输入 5, 5, 5, -1,它会返回 15。但其他时候,它会返回 0。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int input;
vector<int> input_vector;
cout << "Enter -1 when done" << endl;;
cout << "Your int: ";
cin >> input;
while (input != -1) {
input_vector.push_back(input);
cout << "Your int: ";
cin >> input;
}
int sum = 0;
for (auto i : input_vector) {
cout << "i: " << input_vector[i] << endl;
sum += input_vector[i];
}
cout << "Sum: " << sum << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您使用基于范围的表示法for (auto i : input_vector)来给出i数组中存储的实际值。但随后你将它用作input_vector[i]. 这是错误的:i是元素的值,而不是索引。所以替换input_vector[i]为i.
for (auto i : input_vector) {
cout << "i: " << i << endl;
sum += i;
}
Run Code Online (Sandbox Code Playgroud)
请注意,现在您不再拥有索引,但为了计算总和,您不需要它。