#pragma once #include #include #include template class static_vector { T m_data[Capacity]; size_t m_size = 0; public: void push_back(const T &v) { if (m_size < Capacity) m_data[m_size++] = v; } void clear() { m_size = 0; } size_t size() const { return m_size; } size_t capacity() const { return Capacity; } bool full() const { return m_size >= Capacity; } bool empty() const { return m_size == 0; } T *data() { return m_data; } const T *data() const { return m_data; } T &operator[](size_t i) { return m_data[i]; } const T &operator[](size_t i) const { return m_data[i]; } T *begin() { return m_data; } T *end() { return m_data + m_size; } const T *begin() const { return m_data; } const T *end() const { return m_data + m_size; } };