#pragma once #include namespace std { template class vector { public: T *mElements; int mSize; int mCapacity; ~vector() { if (mElements != NULL) { decrease_size(mSize); delete mElements; } } void push_back(T &value) { get_new_capacity(1); append_back(1, &value); } T *erase(T *first, T *last) { if (first != last) { int bytesToMove = (int) mElements + mSize * sizeof(T) - (int) last; memmove(first, last, bytesToMove); mSize -= (int) last - (int) first; } return first; } private: void decrease_size(int amount); int get_new_capacity(int growth); void append_back(int length, T *items); }; } // namespace std