Files
datastructures/sequential/vector.hpp

43 lines
671 B
C++

#pragma once
#include <cstdlib>
#include <stdexcept>
template<class T>
class Vector
{
private:
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;
}
Vector()
: data(nullptr),
size(0U)
{}
};