Files
datastructures/random-access-containers/vector.hpp

37 lines
615 B
C++

#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 * sizeof(T));
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;
}
};