From 3dbc5c211a589450f47c893d41415976933cf842 Mon Sep 17 00:00:00 2001 From: Tijmen van Nesselrooij Date: Sun, 28 Apr 2019 19:48:36 +0200 Subject: [PATCH] Vector added --- random-access-containers/vector.hpp | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 random-access-containers/vector.hpp 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