Глава 18. Классы-контейнеры __ _ ______43?
Пример выполнения программы Arraysl из листинга 18.2, скомпилированной в модели EasyWin, показан ниже.
Введите идентификатор (id) и рейтинг студента (для выхода наберите stop):
Studenti 1.0 Student2 2.0 Student3 3.0 Student4 4.0 Students 1.5 StudentG 2.6 Student7 3.7 stop
Введен следующий список студентов:
[0] Studenti 1.0 [1] Student2 2.0 [2] Student3 3.0 [3] Student4 4.0 [4] Student5 1.5 [5] Student6 2.6 [6] Student7 3.7
Замечание
В ранних версиях BIDS контейнеры реализовывались в большей степени с помощью обычных классов, чем шаблонов. Такая реализация сложнее, чем нынешняя версия на основе шаблонов. Для обеспечения совместимости с программами, написанными с использованием классов в старом стиле служат заголовочные файлы из каталога lnclude\Classlib\Obsolete. Их, а также Obsolete, lib следует включить в проект.
Категории контейнеров
В BIDS существуют две основные категории классов. Первую категорию составляют контейнеры низкого уровня, которые используются для реализации классов более высокого уровня. Контейнеры низкого уровня называются FDS (Fundamental Data Structures, Фундаментальные структуры данных) и включают бинарное дерево (binary tree, определено в файле binimp.h^ хэш-таблицу (hashtable, hishimp.h), список связей (linked list, listimp.h), двунаправленный список (double-linked list, dlistimp.h) и вектор (vector, vecimp.h). Классы FDS используются для построения второй категории контейнеров: ADT (Abstract Data Types, Абстрактные типы данных). Классы ADT применяются гораздо шире, чем классы FDS.
Классы ADT включают массив (array, array.h), мультимножество (bag, bag.h), двустороннюю очередь (deque, deques.h), словарь (dictionary, dict.h), очередь (queue, queues.h), множество (set, sets.h) и стек (stack, stack.h). Каждый представитель ADT строится на основе одного или более классов FDS. Класс массив реализован как вектор и поэтому имеет имя TArrayAsVector. Стек может быть реализован как вектор (TStackAsvector) или как список (TStackAsList). Все классы ADT, а также использованные для их реализации классы FDS перечислены в табл. 18.1.