Files
datastructures/random-access-containers/vector.hpp
2019-04-28 19:48:36 +02:00

38 lines
622 B
C++

#include <cstddef>
#include <cstdlib>
#include <stdexcept>
template<class T>
class Vector
{
protected:
T * data;
std::size_t size;
public:
void Resize(std::size_t const newSize)
{
void * result = std::realloc(data, newSize);
if(result == nullptr)
{
throw std::runtime_error("Cannot allocate the requested size of memory.");
}
size = newSize;
data = reinterpret_cast<T *>(result);
}
T & operator[](std::size_t const index)
{
if(index >= size)
{
throw std::out_of_range("Index is greater or equal to size.");
}
return data[index];
}
std::size_t GetSize() const
{
return size;
}
};