Files
cpp08/ex01/Span.hpp

45 lines
967 B
C++

#pragma once
#include <stdexcept>
#include <algorithm>
#include <iostream>
#include <limits>
#include <vector>
class Span {
public:
Span(void);
Span(const unsigned int &);
Span(const Span &);
Span &operator=(const Span &);
~Span(void);
void addNumber(const int &);
template <typename T>
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<int> getData(void) const {return _data;}
private:
std::vector<int> _data;
std::size_t _size;
std::size_t _max_size;
};
std::ostream &operator<<(std::ostream &os, const Span &s);