Глава 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