Глава 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;