diff --git a/random-access-containers/vector.hpp b/random-access-containers/vector.hpp new file mode 100644 index 0000000..4169c8f --- /dev/null +++ b/random-access-containers/vector.hpp @@ -0,0 +1,38 @@ +#include +#include +#include + +template +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(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; + } +}; \ No newline at end of file