430_____________________Часть III. Современное программирование на C++

зовать эти конструкторы и операции с различными контейнерами, они должны быть определены. Для базовых типов данных, таких как целые, вещественные, а также для указателей на объекты это условие естественно выполнено. Для пользовательских типов данных все необходимые функции нужно определять самостоятельно.

В листинге 18.2 приведен пример контейнера — массива объектов типа

STUDENT.

h04301.jpg

#include <iostream.h>

#include <iomanip.h> ftinclude <classlib\arrays.h>

#include "studentl.h"

typedef TArrayAsVector<STUDENT> STUDENT_LIST;

int main() (

STUDENT_LIST studentList(5, 0, 5) ;

string id;

cout « "Введите идентификатор (id) и рейтинг студента ^> (для выхода наберите stop):" « endl;

do {

cin » id;

if (id !="'stop") ( float grade;

cin » grade;

STUDENT student(id, grade);

studentList.Add(student) ;

} } while (id != "stop");

cout « endl « "Введен следующий список студентов:" « endl « setiosflags(ios::fixed) « setprecision(l);

for (int i = 0; i < studentList.GetItemsInContainer(); i++) cout « " [" « i « "] "

« studentList[i]-Getldf) « " « studentList[i].GetGradeO « endl;

return 0;

}

Новый глобальный тип — STUDENT_LIST — объявлен с помощью рператора typedef. Переменная типа STUDENT_LIST объявлена с начальным размером в 5 элементов, по мере необходимости массив будет увеличиваться с шагом 5. Значения STUDENT вводятся пользователем до тех пор, пока для выхода из цикла не будет введено слово "stop". После этого массив выводится на экран.