Контейнеры STL. Другие контейнеры STL (общие сведения)

   
На этом шаге мы приведем общие сведения по другим контейнерам STL.

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

   
Существуют три подхода к созданию "STL-совместимых" контейнеров:

  • Активный подход. Программист реализует интерфейс, обязательный для контейнеров STL. В частности, он должен
    реализовать обычные функции контейнеров вроде begin() и end(). Такой подход называется активным, поскольку требует, чтобы
    контейнер был написан по определенным правилам.
  • Пассивный подход. Программист создает или использует специальные итераторы, обеспечивающие интерфейс между
    алгоритмами и специализированными контейнерами. Все, чего требует пассивный подход, - возможности перебора элементов контейнера, которая
    в том или ином виде поддерживается любым контейнером.
  • Интерфейсные классы. Программист объединяет два предыдущих подхода и пишет интерфейсный класс, который
    инкапсулирует реальную структуру данных в интерфейсе, отвечающем требованиям к контейнерам STL.

   
В следующих шагах сначала рассматривается использование строк как стандартных контейнеров (пример активного подхода). Затем пассивный подход будет описан на
примере другого контейнера - обычного массива. Впрочем, для работы с данными обычного массива также подходят интерфейсные классы.
В конце обсуждаются некоторые аспекты, относящиеся к хэш-таблице, - важному контейнеру, не описанному в стандарте.

   
При написании собственного контейнера STL также можно обеспечить поддержку его параметризации для разных распределителей памяти.
Стандартная библиотека C++ содержит набор специальных функций и классов для программирования с распределителями и
неинициализированной памятью.

   
На следующем шаге мы рассмотрим строки как контейнеры STL.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий