**Цель работы:** - Изучить способы определения шаблонов, принцип и механизм создания шаблонных классов и шаблонов функций - Получить практические навыки работы с шаблонными классами. **Задания:** 1. Модифицируйте абстрактные типы данных, реализованные по заданию лабораторной работы №3, используя шаблоны определения класса и шаблоны определения функции. 2. Обязательно сделать шаблонным класс контейнер. 3. Шаблоны определения функции на свое усмотрение. 4. Проверьте работоспособность АТД на тестовом наборе данных. **Контрольные вопросы:** 1. Для чего используется ключевое слово **template**? 2. В чем заключаются особенности параметров по умолчанию для шаблонов? 3. Для чего используются шаблоны функций? 4. Назовите разновидности дружественных функций шаблонного класса. 5. Дайте определение специализации шаблона.