#pragma once #include template class SVector { private: size_t stored = 0; T array[size]; public: T* data() { return array; } T& operator[](size_t i) { return array[i]; } T& at(size_t i) { return array[i]; } T& front() { return array[0]; } T& back() { return array[stored-1]; } bool empty() const { return stored == 0 ? true : false; } size_t count() const { return stored; } constexpr size_t maxSize() const { return size; } size_t remainingCapacity() const { return size - stored; } bool push_back(const T in) { if( remainingCapacity() != 0) { array[stored] = in; ++stored; return true; } else return false; } bool erase(size_t position) { if(position > stored) return false; array[position].~T(); --stored; for( size_t i = position; i < stored; i++ ) array[i] = array[i+1]; return true; } void clear() { for( size_t i = 0; i < stored; i++ ) array[i].~T(); stored = 0; } };