8.1 Введение.
Одним из самых полезных видов классов является контейнерный класс,
т.е. такой класс, который хранит объекты каких-то других типов.
Списки, массивы, ассоциативные массивы и множества - все это
контейнерные классы. С помощью описанных в главах 5 и 7 средств
можно определить класс, как контейнер объектов единственного,
известного типа. Например, в $$5.3.2 определяется множество целых.
Но контейнерные классы обладают тем интересным свойством, что тип
содержащихся в них объектов не имеет особого значения для
создателя контейнера, но для пользователя конкретного контейнера
этот тип является существенным. Следовательно, тип содержащихся
объектов должен параметром контейнерного класса, и создатель такого
класса будет определять его с помощью типа-параметра. Для каждого
конкретного контейнера (т.е. объекта контейнерного класса) пользователь
будет указывать каким должен быть тип содержащихся в нем объектов.
Примером такого контейнерного класса был шаблон типа Vector из
$$1.4.3.
В этой главе исследуется простой шаблон типа stack (стек) и
в результате вводится понятие шаблонного класса. Затем рассматриваются
более полные и правдоподобные примеры нескольких родственных шаблонов
типа для списка. Вводятся шаблонные функции и формулируются правила,
что может быть параметром таких функций. В конце приводится шаблон
типа для ассоциативного массива.