Глава 18. Классы-контейнеры________________________________503

реализована специально для списков. Как и глобальная функция, функция-член имеет две формы. Первая использует определенную для элементов операцию <, а вторая для выполнения сравнений использует функцию

binary.

// Сначала списки сортируются studentList3.sort();

studentList5.sort() ;

// studentList5 после объединения станет пустым student3.merge(studentList5) ;

unique () — функция-член, которая также работает с упорядоченными списками. Она удаляет из последовательности одинаковых элементов все элементы, кроме одного. Для сравнения может быть использована бинарная функция.

// Пусть studentList3 упорядочен. Удаление всех дубликатов studentList3.unique() •

Функция-член sort() сортирует список. Использование функции-члена более эффективно, чем глобальной функции-шаблона sort о.

remove () удаляет все вхождения в список заданного объекта.

remove_if() удаляет все элементы списка, для которых переданная как аргумент функция-предикат принимает истинное значение.

// Описание функции предиката для использования в remove if

bool Passing(STUDENT &s)

{

if (s.GetGradeO < 1.0)

return false;

return true;

}

// Удаление всех объектов с идентификатором "John Newton" . studentList3.remove(STUDENT("John Newton", 0.0));

// Удаление всех студентов с плохой оценкой studentList3.remove if(Passing) ;

Использование списков демонстрирует листинг 18.23.

ftdefine RWSTD_NO_NAMESPACE ftinclude <stdlib.h> ttinclude <iostream.h> ttinclude <algorith.h> ftinclude <list.h>

typedef list<int> INT LIST;