【发布时间】:2019-08-07 17:45:30
【问题描述】:
我目前正在尝试编写一个函数,该函数将在 C++ 中找到整数数组中元素的平均值。
我查看了new c++11 for loop causes: "error: ‘begin’ was not declared in this scope",但我不太明白这个问题以及如何解决它。
double avg(int arr[]) {
double sum = 0;
int size = 0;
for (int i : arr) {
sum += i;
size += 1;
}
return sum / size;
}
它给我的错误是“'begin' 没有在这个范围内声明”和“'end' 没有在这个范围内声明”。 有人可以解释为什么会发生错误以及可能的解决方法吗?
【问题讨论】:
-
for (int i : arr) {问题是 arr 的大小未知。它衰减成一个指针。 -
您的数组没有大小,因此每个数组都无法工作,请改用
std::vector或std::array -
你是
arrdecaying to a pointer的受害者。 -
使用
std::array<int>,而不是愚蠢的常规数组。那么你就不会遇到现在看到的问题了。 -
避免使用原始 C 样式数组。使用
std::array或std::vector总是。
标签: c++