From 8319d391be8fe6bf82043132196057104410891e Mon Sep 17 00:00:00 2001 From: studiosi Date: Mon, 17 Aug 2026 21:14:50 +0300 Subject: [PATCH] Solved: 31 - Transform and Reduce --- .../08_stl_algorithms/src/transform_reduce.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/modules/08_stl_algorithms/src/transform_reduce.cpp b/modules/08_stl_algorithms/src/transform_reduce.cpp index 0e17e8b..b2d87eb 100644 --- a/modules/08_stl_algorithms/src/transform_reduce.cpp +++ b/modules/08_stl_algorithms/src/transform_reduce.cpp @@ -1,9 +1,20 @@ #include "transform_reduce.hpp" +#include + namespace stl_algorithms { -auto square_all(const std::vector& data) -> std::vector { (void)data; return {}; } -auto sum_all(const std::vector& data) -> int { (void)data; return 0; } -auto product_positive(const std::vector& data) -> long long { (void)data; return 0; } +auto square_all(const std::vector& data) -> std::vector { + auto result = std::vector{}; + result.reserve(data.size()); + std::ranges::transform(data, std::back_inserter(result), [](const int value) { return value * value; }); + return result; +} +auto sum_all(const std::vector& data) -> int { + return std::ranges::fold_left(data, 0, std::plus{}); +} +auto product_positive(const std::vector& data) -> long long { + return std::ranges::fold_left(data, 1, [](const int accumulator, const int value) { return value > 0 ? value * accumulator : accumulator; }); +} } // namespace stl_algorithms