#pragma once #include #include #include #include #include class Span { public: Span(void); Span(const unsigned int &); Span(const Span &); Span &operator=(const Span &); ~Span(void); void addNumber(const int &); template void addNumbers(const typename T::const_iterator begin, const typename T::const_iterator end) { unsigned int csize = this->_size; csize += std::distance(begin, end); if (csize > this->_max_size) throw std::length_error("iterator too big, can't add it"); this->_data.insert(this->_data.end(), begin, end); this->_size += std::distance(begin, end); } int shortestSpan(void); int longestSpan(void); std::size_t getSize(void) const {return _size;} std::vector getData(void) const {return _data;} private: std::vector _data; std::size_t _size; std::size_t _max_size; }; std::ostream &operator<<(std::ostream &os, const Span &s);