Должно быть, это самая распространенная функция, для которой у всех где-то есть фрагмент кода, но на самом деле я потратил не менее 1,5 часов на поиск ее на SO, а также на других сайтах C++ и не нашел решения.
Я хочу вычислить среднее значение 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
Почему «накопить» не входит в «стандартный»?
p.s.: я знаю, что могу сделать 'sum += array[i]' и не использовать аккумулирование, но я хотел бы понять, что здесь происходит и как заставить мой пример работать.
accumulate( array, array + count, 0.0 );
Обратите внимание на 0.0 — вы накапливаете целые числа в своем фрагменте кода. - person Tom   schedule 26.10.2011sizeof(array)
, так как размер массива неизвестен. См. Ответ @xanatos ниже для лучшего способа в этом случае. - person Some programmer dude   schedule 26.10.2011