Свертка диапазона в C++
Алгоритм reduce из C++17 заменяет связку
накопления с явным началом: он схлопывает
диапазон через переданную функцию.
Для суммы передайте лямбду сложения.
Пустой диапазон ведет себя иначе, чем
у accumulate - следите за версией
стандарта. Запишем вектор и выведем
произведение:
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector<int> nums = {2, 3, 4};
int prod = std::reduce(nums.begin(), nums.end(), 1, [](int a, int b) {
return a * b;
});
std::cout << prod << "\n";
return 0;
}
Сверните вектор {5, 2, 2} алгоритмом reduce с началом 0 и сложением, выведите сумму.