From 0340feac64727be46ded95678baffb07c3a9dd4e Mon Sep 17 00:00:00 2001 From: Ethan Date: Wed, 27 Oct 2021 11:30:37 -0400 Subject: [PATCH 1/2] Implement accumulate --- algorithm.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/algorithm.h b/algorithm.h index 0037651..76bbd50 100644 --- a/algorithm.h +++ b/algorithm.h @@ -70,6 +70,28 @@ namespace firefly::std { return count; } + template std::size_t + accumulate(InputIt begin, InputIt end) { + std::size_t sum = 0; + + while (begin != end) { + sum += *begin; + } + + return sum; + } + + template std::size_t + accumulate(InputIt begin, InputIt end, Op op) { + std::size_t sum = 0; + + while (begin != end) { + sum = op(sum, *begin); + } + + return sum; + } + /* template void sort(RandomIt first, RandomIt last) { From b66eae9b9b0607d489772d0f9fa3abbf443e0ad5 Mon Sep 17 00:00:00 2001 From: Ethan Date: Sat, 30 Oct 2021 18:50:11 -0400 Subject: [PATCH 2/2] Compile time bug fix Replaced std::size_t (which resulted in an error), with size_t --- algorithm.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/algorithm.h b/algorithm.h index 76bbd50..29e0ae7 100644 --- a/algorithm.h +++ b/algorithm.h @@ -46,9 +46,9 @@ namespace firefly::std { } template - std::size_t count_if(InputIt first, const InputIt last, + size_t count_if(InputIt first, const InputIt last, UnaryPredicate func) { - std::size_t count = 0; + size_t count = 0; for (; first != last; first++) { if (func(*first)) @@ -58,9 +58,9 @@ namespace firefly::std { return count; } - template std::size_t count(InputIt first, const InputIt last, + template size_t count(InputIt first, const InputIt last, const T& lval) { - std::size_t count = 0; + size_t count = 0; for (; first != last; first++) { if (*first == lval) @@ -70,9 +70,9 @@ namespace firefly::std { return count; } - template std::size_t + template size_t accumulate(InputIt begin, InputIt end) { - std::size_t sum = 0; + size_t sum = 0; while (begin != end) { sum += *begin; @@ -81,9 +81,9 @@ namespace firefly::std { return sum; } - template std::size_t + template size_t accumulate(InputIt begin, InputIt end, Op op) { - std::size_t sum = 0; + size_t sum = 0; while (begin != end) { sum = op(sum, *begin);