Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Функциональные объекты



Функциональным объектом называется объект некоторого класса,

для которого определена единственная операция вызова функции 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...