Преобразование и свертка в C++
Алгоритм transform_reduce комбинирует
map и reduce: унарная функция меняет
элемент, бинарная - объединяет значения.
Можно задать начальное значение и
отдельную операцию редукции. Подключите
#include <numeric>. Запишем длины
строк и выведем сумму квадратов длин:
#include <iostream>
#include <numeric>
#include <string>
#include <vector>
int main() {
std::vector<std::string> words = {"a", "bb", "ccc"};
int total = std::transform_reduce(
words.begin(), words.end(),
0,
[](int a, int b) { return a + b; },
[](const std::string& s) { return (int)s.size() * (int)s.size(); });
std::cout << total << "\n";
return 0;
}
Для вектора {1, 2, 3, 4} посчитайте transform_reduce с унарной функцией удвоения и сложением, начало 0, выведите ответ.