оамечание

Поскольку итератор произвольного доступа, возвращаемый функцией begin (), поддерживает операцию сложения (begin ()+50), предыдущий фрагмент работает правильно. Если при инициализации studentList5 был бы использован другой список, то операция operator+(int) была бы недоступна, поскольку список по умолчанию поддерживает только двунаправленные итераторы.

Конструкторы аналогичны конструкторам векторов и двусторонних очередей. Большинство функций-членов, операций и определений типов такое же, как и для их векторных аналогов.

Операция присваивания заменяет один список другим:

studentList2 = studentList4; •

Функции-члены asign(), begin (), end(), rbeginO, rend(), push_back, pop_back, insert (), empty (), front-O, back(), erase (), max_ size (), size(),

swapf) выполняют такие же операции, что и одноименные функции-члены векторов. Единственное отличие состоит в том, что функции, возвращающие итераторы, возвращают двунаправленные итераторы, а не итераторы произвольного доступа. Функции и их свойства подробно обсуждались в разделе "Вектор". Для двусторонних очередей и списков имеются две дополнительные функции — push_front () и pop_front (). Они подробно рассматривались в разделе "Двусторонняя очередь".

При вставке в вектор или двустороннюю очередь ссылки и указатели на элементы могут стать неверными. Для списков это не так. Поскольку размещение элементов в памяти не обязательно непрерывное, для сохранения при вставке порядка в последовательности нет необходимости сдвигать элементы.

Функция-член splice (? сращивает один список с другим. Ниже иллюстрируются Три формы splice ():

// Вставка всех элементов studentList2 в список studentList3 начиная // с первого элемента studentList3. Список studentList2 остается пустым studentList3.splice(studentList3.begin(), studentList2) ;

// Вставка объекта STUDENT John Newton из конца studentList4 // в конец studentList3.

iist<STUDENT>::iterator i = find(studentList4.begin(), ^studentList4.end() , STUDENT("John Newton",0.0));

if (!(i == studentVector4.end())

studentList3.splice(studentList3.end(), studentList4, i, , '5>studentList4 . end () ) ;

else cout « "John Newton в четвертом списке не найден.\n"

Функция-член merge о объединяет два упорядоченных списка. Эта функция очень похожа на алгоритм merge () за исключением того, что функция-член