#pragma once #include #include template class Vector { private: T * data; std::size_t size; public: void Resize(std::size_t const newSize) { if(newSize == 0ul) { std::free(data); data = nullptr; return; } 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(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; } Vector() : data(nullptr), size(0U) {} };