#pragma once #include template class Array { private: int m_capacity = 0; T* m_data = nullptr; public: Array(int capacity) : m_capacity(capacity), m_data(new T[capacity]{}) { } int GetCapacity() { return m_capacity; } bool IsEmpty() { return m_capacity == 0; } T& operator[](int index) { return m_data[index]; } friend std::ostream& operator<< (std::ostream& stream, const Array& array) { for (int i = 0; i <= array.m_capacity - 1; i++) { stream << i << ": " << array.m_data[i] << std::endl; } return stream; } };