它一定是最常见的函数,每个人在某处都有代码片段,但我实际上花了不少于 1.5 小时在 SO 以及其他 C++ 网站上搜索它,但还没有找到解决方案。
我想计算 a 的平均值double array[]
使用函数。我想将数组作为函数传递给参考。有数百万个例子,其中平均值是在 main() 循环中计算的,但我正在寻找的是一个函数,我可以将其放入外部文件中并在以后随时使用它。
到目前为止,这是我的最新版本,导致编译错误:
double mean_array( double array[] )
{
int count = sizeof( array ) / sizeof( array[0] );
double sum = accumulate( array, array + count, 0 );
return ( double ) sum / count;
}
编译错误是:
错误 C3861:“累积”:找不到标识符
你能告诉我如何修复这个功能吗?那个编译错误是什么意思?
如果我使用std::accumulate
(超过已经定义的using namespace std
),然后我收到以下错误:
'accumulate' : is not a member of 'std'
'accumulate': identifier not found
为什么“accumulate”不是“std”的成员?
p.s.:我知道我可以使用“sum += array[i]”方式而不是使用累积,但我想了解这里发生了什么以及如何使我的示例工作。
尝试添加
#include <numeric>
它将引入您正在寻找的“std::accumulate”函数。
更进一步,您将遇到找出数组中元素数量的问题。事实上,不能将数组传递给函数并希望函数能够知道数组的大小。它将衰减为指针。因此,您的count
计算会出错。如果您希望能够传递实际大小的指定数组,则必须使用模板化函数。
template <int N>
double mean_array( double ( & array )[N] )
{
return std::accumulate( array, array + N, 0.0) / (double)(N);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)