На этом шаге мы приведем общие сведения по другим контейнерам STL.
Библиотека STL - это архитектура, а не набор классов. Кроме стандартных контейнерных классов она позволяет работать с другими структурами данных. Вместо контейнеров STL программист может использовать строки или обычные массивы или же написать собственный контейнер для особых целей. При этом он по-прежнему может применять алгоритмы (например, сортировки или слияния) для своего типа контейнера. Подобная архитектура является хорошим примером "принципа открытой закрытости": библиотека открыта для расширения, но закрыта для модификации.
Существуют три подхода к созданию "STL-совместимых" контейнеров:
В следующих шагах сначала рассматривается использование строк как стандартных контейнеров (пример активного подхода). Затем пассивный подход будет описан на примере другого контейнера - обычного массива. Впрочем, для работы с данными обычного массива также подходят интерфейсные классы. В конце обсуждаются некоторые аспекты, относящиеся к хэш-таблице, - важному контейнеру, не описанному в стандарте.
При написании собственного контейнера STL также можно обеспечить поддержку его параметризации для разных распределителей памяти. Стандартная библиотека C++ содержит набор специальных функций и классов для программирования с распределителями и неинициализированной памятью.
На следующем шаге мы рассмотрим строки как контейнеры STL.