From 2f90a1ee13f7835c441ec2a310c7069b9ccf528c Mon Sep 17 00:00:00 2001 From: hugogogo Date: Mon, 14 Mar 2022 11:18:25 +0100 Subject: [PATCH] d08 ex01 change addnumber(range) to match official container way of doing it --- d08/ex01/Span.cpp | 21 +++++++++++++++++---- d08/ex01/Span.hpp | 4 +++- d08/ex01/main.cpp | 9 ++++++--- d08/ex01/span | Bin 61832 -> 61840 bytes 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/d08/ex01/Span.cpp b/d08/ex01/Span.cpp index 903253e..28a564b 100644 --- a/d08/ex01/Span.cpp +++ b/d08/ex01/Span.cpp @@ -75,15 +75,28 @@ void Span::addNumber(int nb) { _sort.push_back(nb); std::sort(_sort.begin(), _sort.end()); } -void Span::addNumber(int * arr, unsigned int len) { - for (unsigned int i = 0; i < len; i++) { +//void Span::addNumber(int * arr, unsigned int len) { +// for (unsigned int i = 0; i < len; i++) { +// if (_container.size() >= _max) +// throw std::out_of_range(B_RED "out of range number" RESET); +// _container.push_back(arr[i]); +// _sort.push_back(arr[i]); +// } +// std::sort(_sort.begin(), _sort.end()); +//} +template +void Span::addNumber(InputIterator first, InputIterator last) { + if (last < first) + throw std::out_of_range(B_RED "bad iterators" RESET); + for (; first != last; first++) { if (_container.size() >= _max) throw std::out_of_range(B_RED "out of range number" RESET); - _container.push_back(arr[i]); - _sort.push_back(arr[i]); + _container.push_back(*first); + _sort.push_back(*first); } std::sort(_sort.begin(), _sort.end()); } +template void Span::addNumber(int*, int*); diff --git a/d08/ex01/Span.hpp b/d08/ex01/Span.hpp index 8fb8dc2..b6de956 100644 --- a/d08/ex01/Span.hpp +++ b/d08/ex01/Span.hpp @@ -17,7 +17,9 @@ public: Span & operator=( Span const & rhs ); void addNumber(int nb); - void addNumber(int * arr, unsigned int size); +// void addNumber(int * arr, unsigned int size); + template + void addNumber(InputIterator first, InputIterator last); unsigned int shortestSpan(); unsigned int longestSpan(); diff --git a/d08/ex01/main.cpp b/d08/ex01/main.cpp index a41c40a..dba3869 100644 --- a/d08/ex01/main.cpp +++ b/d08/ex01/main.cpp @@ -213,7 +213,8 @@ int main() { for (unsigned int i = 0; i < len; i++) arr[i] = rand() % 100; - sp.addNumber(arr, len); + //sp.addNumber(arr, len); + sp.addNumber(arr, &arr[len]); std::cout << B_BLUE "sp :" RESET "\n"; std::cout << sp << "\n"; @@ -231,7 +232,8 @@ int main() { for (unsigned int i = 0; i < len; i++) arr[i] = rand() % (10000000000000); - sp.addNumber(arr, len); + //sp.addNumber(arr, len); + sp.addNumber(arr, &arr[len]); std::cout << B_BLUE "sp :" RESET "\n"; std::cout << sp << "\n"; @@ -253,7 +255,8 @@ int main() { arr[i] *= -1; } - sp.addNumber(arr, len); + //sp.addNumber(arr, len); + sp.addNumber(arr, &arr[len]); std::cout << B_BLUE "sp :" RESET "\n"; std::cout << sp << "\n"; diff --git a/d08/ex01/span b/d08/ex01/span index 7d7eab0004419dc0dcffd8323df52451012fe221..e914e3a37a17f7cafcaf128882e042dbfb166743 100755 GIT binary patch delta 16476 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 C2vN2G delta 16118 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