У меня есть стандартный библиотечный контейнер больших чисел, настолько большой, что они могут вызвать переполнение, если я их добавлю. Пусть притворите этот контейнер:
std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Я хочу рассчитать среднее значение этого контейнера, используя std:: accumulate, но я не могу добавить все числа вместе. Я просто вычислил его с помощью v[0]/v.size() + v[1]/v.size() + ...
. Поэтому я установил:
auto lambda = ...;
std::cout << std::accumulate(v.begin(), v.end(), 0, lambda) << std::endl;
Вот что я пробовал до сих пор, где ->
указывает вывод:
lambda = [&](int a, int b){return (a + b)/v.size();}; -> 1
lambda = [&](int a, int b){return a/v.size() + b/v.size();}; -> 1
lambda = [&](int a, int b){return a/v.size() + b;}; -> 10
Как я могу создать правильное среднее, чтобы выход был 5
?