Реализовать шаблон очереди в виде "гибкого" массива, взяв за образец динамический растущий массив (образец прикреплен). Добавление и удаление элементов выполнять только по одному; добавление - в конце массива, удаление - в начале.
Нужно реализовать дружественные операции ввода/вывода двумя способами: как внешние функции-шаблоны и как "нешаблонные", определенные внутри класса. В задании задействовать итератор как набор методов класса. В главной функции продемонстрировать не менее двух инстанцирований шаблона с разными аргументами и вызов всех методов.
Добавить конструктор копирования и операцию присваивания в виде шаблонов.
Определить итератор как вложенный класс.
Программа пишется в Code::Blocks.
Если прикрепленный массив плохо видно, то он находится в учебнике на стр 88.