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 7d7eab0..e914e3a 100755 Binary files a/d08/ex01/span and b/d08/ex01/span differ