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

щая последовательность состоит из элементов *first, *first - * (first+l) и т. д. Вторая версия использует функцию binary_op вместо операции вычитания. Возвращается указатель на следующий за последним в выходной последовательности элемент.

template <ciass Inputlterator, class Outputlterator> Outputlterator adjacent_difference (Inputlterator first, Inputlterator last, Outputlterator result) ;

template <class Inputlterator, class Outputlterator, .class Binary0peration>

Outputlterator adjacent_difference (Inputlterator first, Inputlterator last, Outputlterator result, BinaryOperation binary_op);

Контейнеры библиотеки STL

В данном разделе рассматриваются все контейнеры библиотеки STL. Обсуждаются методы конструирования, наиболее обычные функции-члены и операции, а также их использование с некоторыми алгоритмами; попутно приводятся примеры программ.

Вектор

Вектор — это массив индексированных элементов, подобный массиву языка С. Произвольный доступ к элементам обеспечивается операцией [ ]. В отличие от массивов С, векторы STL могут динамически менять размер для размещения новых элементов. При удалении любых элементов, кроме послед-' него, массив автоматически сжимается. При добавлении новых элементов детальные сдвигаются вверх. Также вектор позволяет запрашивать информацию о своем состоянии, например, о размере вектора.

Эбъекты всех типов, хранящихся в векторе, должны поддерживать конст-зуктор по умолчанию (конструктор без аргументов), конструктор копий и 1еструктор. Заметим, что рассматривавшийся класс STUDENT удовлетворяет зсем этим условиям.

Зекторы удобны в случаях, когда необходима последовательная организация 1анных, при которой данные добавляются в конец и удаляются с конца сонтейнера. Двусторонние очереди более эффективны, если данные добав-гяются и удаляются с обоих концов. Списки наиболее эффективны, если [анные добавляются и удаляются прямо внутри контейнера.

!аголовочный файл для использования векторов — vector.h, его необходимо юдключить. Все заголовочные файлы библиотеки STL находятся в каталоге Bc5\Include.