Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Функциональным объектом называется объект некоторого класса,
для которого определена единственная операция вызова функции operator().
В стандартной библиотеке определены шаблоны функциональных объектов для операций сравнения, встроенных в язык C++. Они возвращают значение типа bool, то есть являются предикатами (табл. 7).
Таблица 7. Предикаты стандартной библиотеки
ОперацияЭквивалентный предикат (функциональный объект)
== equal_to
!= not_equal_to
> greater
< less
>= greater_equal
<= less_equal
Очевидно, что при подстановке в качестве аргумента алгоритма требуется инстанцирование этих шаблонов, например: equal_to<int>().
Вернемся к последней программе, где с помощью алгоритма sort был отсортирован вектор v1. Заменим вызов sort на следующий:
sort(v1.begin(), v1.endO, greater<double>());
В результате вектор будет отсортирован по убыванию значений его элементов.
Несколько сложней обстоит дело, когда сортировка выполняется для контейнера с объектами пользовательского класса. В этом случае программисту нужно самому позаботиться о наличии в классе предиката, задающего сортировку по умолчанию, а также (при необходимости) определить функциональные классы, объекты которых позволяют изменять настройку алгоритма sort.
Дата публикования: 2014-11-28; Прочитано: 295 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!