这可能是每个人都有一个代码片段的最常见函数,但我实际上花费了不少于1.5小时在SO以及其他C++网站上搜索它,但没有找到解决方案。
我想使用一个函数来计算
到目前为止,这是我的最新版本,会产生编译错误:
为什么“accumulate”不是“std”的成员?
附注:我知道我可以使用“sum += array[i]”方法而不使用“accumulate”,但我想了解这里发生了什么以及如何使我的示例工作。
我想使用一个函数来计算
double array[]
的平均值,并将数组作为引用传递给该函数。有数百万例子在主循环中计算平均值,但我正在寻找的是一个可以放在外部文件中并随时使用的函数。到目前为止,这是我的最新版本,会产生编译错误:
double mean_array( double array[] )
{
int count = sizeof( array ) / sizeof( array[0] );
double sum = accumulate( array, array + count, 0 );
return ( double ) sum / count;
}
编译错误为:
error C3861: 'accumulate': 找不到标识符
你能告诉我如何修复这个函数吗?这个编译错误是什么意思?
如果我使用std::accumulate
(已定义using namespace std
),那么我会得到以下错误:
'accumulate' : is not a member of 'std'
'accumulate': identifier not found
为什么“accumulate”不是“std”的成员?
附注:我知道我可以使用“sum += array[i]”方法而不使用“accumulate”,但我想了解这里发生了什么以及如何使我的示例工作。
accumulate( array, array + count, 0.0 );
中的 0.0 - 在您的代码片段中,您正在累加整数。 - Tomsizeof(array)
作为数组的大小,因为数组的大小是未知的。请参见下面 @xanatos 的答案以获取更好的解决方法。 - Some programmer dude