diff --git a/modules/14_cpp26/src/pipeline_ranges.cpp b/modules/14_cpp26/src/pipeline_ranges.cpp index 2fb3686..e2b7f03 100644 --- a/modules/14_cpp26/src/pipeline_ranges.cpp +++ b/modules/14_cpp26/src/pipeline_ranges.cpp @@ -1,17 +1,23 @@ #include "pipeline_ranges.hpp" +#include +#include + namespace cpp26 { -auto top_values_by_category(const std::vector& records, int min_value) - -> std::vector { - (void)records; (void)min_value; - return {}; +auto top_values_by_category(const std::vector& records, const int min_value) -> std::vector { + return records + | std::views::filter([min_value](const auto& record) { return record.value > min_value; }) + | std::ranges::to>(); } -auto total_by_category(const std::vector& records) - -> std::vector> { - (void)records; - return {}; +auto total_by_category(const std::vector& records) -> std::vector> { + std::map grouped; + for (const auto&[category, value] : records) { + grouped[category] += value; + } + return grouped + | std::ranges::to>>(); } } // namespace cpp26