430_____________________Часть III. Современное программирование на C++
зовать эти конструкторы и операции с различными контейнерами, они должны быть определены. Для базовых типов данных, таких как целые, вещественные, а также для указателей на объекты это условие естественно выполнено. Для пользовательских типов данных все необходимые функции нужно определять самостоятельно.
В листинге 18.2 приведен пример контейнера — массива объектов типа
STUDENT.
#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". После этого массив выводится на экран.