#include "Span.hpp" Span::Span() : _n(0) { } Span::Span(unsigned int n) : _n(n) { } Span::Span(const Span &other) : _n(other._n), _vec(other._vec) { } Span &Span::operator=(const Span& other) { if (this != &other) { _n = other._n; _vec = other._vec; } return *this; } Span::~Span() { } void Span::addNumber(int x) { if (this->_vec.size() >= this->_n) throw std::out_of_range("Span vector is full"); if (this->_vec.size() < this->_n) this->_vec.push_back(x); } int Span::longestSpan() const { if (_vec.empty() || _vec.size() == 1) throw std::out_of_range("Span vector has less than 2 values"); std::vector::const_iterator maxIt = std::max_element(_vec.begin(), _vec.end()); std::vector::const_iterator minIt = std::min_element(_vec.begin(), _vec.end()); return (*maxIt - *minIt); } int Span::shortestSpan() const { if (_vec.empty() || _vec.size() == 1) throw std::out_of_range("Span vector has less than 2 values"); std::vector tempvec = _vec; std::sort(tempvec.begin(), tempvec.end()); int minspan = std::numeric_limits::max(); for (size_t i = 0; i < _vec.size() - 1; ++i) { int tempspan = tempvec[i + 1] - tempvec[i]; if (tempspan < minspan) minspan = tempspan; } return (minspan); }