Необходимо реализовать стэк, который содержит следующий набор операций:
- push - добавление нового элемента;
- pop - удаление элемента с вершины стэка;
- top - чтение элемента на вершине стэка;
- size - чтение количества элементов в стэке;
- is_empty - стэк пуст?;
- is_full - стэк полон?.
Реализация стэка должна быть выполнена на основе класса MyList, который реализует следующее:
- itarator - класс, который указывает на элемент списка. Содержит реализацию операторов ++ (перейти к следующему) и * (получить значение);
- begin - возвращает итератор на первый элемент;
- end - возвращает итератор на элемент следующий после последнего;
- del - удаляет элемент на который указывает итератор;
- add - добавляет элемент на позицию итератора;
- at - возвращает итератор на заданной позиции.
Помимо MyList должен быть реализован класс MyArray, который содержит аналогичный набор методов.
Класс MyList должен быть шаблонный. Реализация стэка должна быть выполнена в виде шаблонного класса с двумя параметрами: тип хранимых элементов и структура хранения на основе которой функционирует стэк (по умолчанию MyList).