Двоичное дерево | binimp.h |
Таблица хеширования | hashimp.h |
Связанный список | listimp.h |
Двусвязанный список | dlistimp.h |
Вектор | vectimp.h |
Массив | arrays.h |
Ассоциация | assoc.h |
Удаление из очереди | dequeue.h |
Очередь | queues.h |
Множество | sets.h |
Стек | stacks.h |
Структуры FDS - это контейнеры нижнего уровня, реализующие
структуры памяти. Каждая FDS имеет фундаментальные функции добавления и отсоединения. Типы ADT обычно используются в конструкциях
обработки данных. Каждый тип ADT имеет соответствующие методы,
например, контейнеры стека - функции-элементы Push и Pop.
Каждый тип ADT основан на FDS. Например, TArrayAsVector реализует массив, используя в качестве соответствующей структуры FDS
вектор. Контейнеры ADT используют характеристики хранения соответствующих FDS и добавляет специфические методы доступа, которые
делают каждый из них уникальным.
Контейнеры могут хранить копии объектов (прямые контейнеры)
или указатели на объекты (косвенные контейнеры). Например, следующий контейнер является косвенным массивом, в котором хранятся
указатели на значения float:
TIArraysAsVector<float> FloatPtrArray(10);
где I - имя шаблона, указывающее соответствующий контейнер.
В некоторых типах контейнеров содержимое записывается в отсортированном виде. Отсортированные контейнеры (как косвенные,
так и прямые) должны иметь соответствующую операцию <, что позволяет определить порядок элементов. Эти операции предусмотрены для
предопределенных типов. Для типов, определенных пользователем, вы
должны обеспечить такую операцию. Для прямых объектов тип должен
иметь допустимую операцию == - используемый по умолчанию конструктор. Для косвенных контейнеров сортируются объекты, а не указатели, которые содержит контейнер.