Глава 18. Классы-контейнеры________________________________447

сков существуют специальные классы — элементы-контейнеры (TMListElement для списка связей и TNDoubleListElement для двунаправленного списка). Эти классы добавляют к объектам, которые должны храниться в списке, поля-указатели. Пользователь непосредственно не должен иметь дело с этими классами.

Контейнеры BIDS

В следующих разделах рассматриваются все контейнеры ATD и два наиболее ходовых контейнера FDS — бинарное дерево и двунаправленный список. В каждом разделе дается краткое описание типа контейнера, часто употребляемые операции и функции, а также пример использования.

Массив

*

Массив — это контейнер, обеспечивающий с помощью операции [ ] произвольный доступ к своим элементам. В отличие от массивов языка С, массивы BIDS являются динамическими и для их размещения не обязательно иметь непрерывную область памяти. Для класса STUDENT из листинга 18.5 наиболее употребительными классами являются:

typedef TArrayAsVector<STUDENT> STUDENT_ARRAY;

typedef TSArrayAsVector<STUDENT> SORTED_STUDENT_ARRAY;

typedef TIArrayAsVector<STUDENT> STUDENT_POINTER_ARRAY;

typedef TISArrayAsVector<STUDENT> SORTED_STUDENT_POINTED_ARRAY;

Конструкторы могут иметь до трех параметров. Первый параметр обязателен и определяет значение наибольшего из индексов. Для определения массива из 100 элементов STUDENT используется следующая конструкция:

STUDENT_ARRAY studentArrayl(99) ;

Индекс массива начинается с 0 и имеет максимальное значение 99. При попытке добавить элемент с индексом большим 99 или меньшим 0 массив не будет увеличен и попытка окончится неудачей. Второй параметр — нижнее значение индекса. Сортируемый массив элементов STUDENT с индексом от 10 до 20 определяется так:

SORTED_STUDENT_ARRAY studentArray2(20, 10);

i

По умолчанию значение нижнего индекса равно 0. Третий и последний параметр указывает число дополнительных элементов, которые могут динамически добавляться в массив. По умолчанию его значение равно 0 и размер массива не может меняться, поэтому для объявления динамического массива этот параметр должен быть больше 0. Объявление массива из 100