На этом шаге мы рассмотрим абстрактные типы данных и фундаментальные структуры данных.
Контейнерный класс - это абстрактный тип данных (АТД). Он обеспечивает абстракцию методов хранения данных, например стек - АТД с такими функциями, как Push() и Рор(), для запоминания и восстановления данных методом стека. Внутренняя реализация этих функций не зависит от концепции стека. Вы можете создать стек с помощью вектора или использовать список. Стек - просто метод программирования, абстракция, которая не имеет ничего общего с конкретными деталями реализации внутреннего хранения данных в нем.
Однако векторы и списки неотделимы от их внутренней структуры. Поэтому они называются фундаментальными структурами данных (ФСД). Не давая точного определения, можно сказать, что ФСД - любая структура, которая может использоваться для реализации АТД. Например, можно реализовать класс стека (АТД) с помощью связного списка (ФСД). Или же вы можете реализовать стек с помощью другого фундаментального типа.
В каждом контейнерном классе комбинируются один АТД и одна ФСД. Имя результирующего класса может звучать как TArrayAsVector. По такому имени можно определить, что контейнер - это массив (АТД), реализованный вектором (ФСД). Начальная буква Т означает "тип".
В библиотеке шаблонов Borland - широкий выбор шаблонов АДТ и ФСД плюс несколько других классов. Для того чтобы воспользоваться контейнерным классом, следует задать тип данных, которые вы собираетесь запоминать, в общем виде: TClass<T>, где Т - ваш тип данных. Например, TStackAsList<long> задает стековый контейнерный класс, способный запоминать длинные целые объекты в связном списке; TQueueAsVector<MyDataType> создает контейнерный класс очереди, в котором можно запоминать объекты типа MyDataType с использованием вектора в качестве внутреннего механизма запоминания данных.
Контейнеры могут содержать простые объекты (целые, вещественные и т.д.), структурные данные (массивы, строки и структуры) и объекты классов. Вы можете хранить в контейнере непосредственно сами объекты или же указатели на них. Возможности хранения данных практически безграничны.
На следующем шаге мы научимся создавать контейнер.