Главная arrow Программирование С++ arrow Что такое объекты-функции?

Что такое объекты-функции?

Объекты-функции — это классы, в которых определена перегрузка оператора вызова с помощью operator (). Есть несколько определенных заранее объектов-функций, таких как less(), greater(), plus(), minus(), multiplies() и divides (). Возможно, наиболее часто используется объект-функция less () определяющая, меньше ли один объект другого. Объекты-функции могут применяться на месте указателей на функции в алгоритмах STL.
В самом общем смысле адаптер преобразует один элемент в другой. Существуют адаптеры контейнера, адаптеры итератора и адаптеры функции. Например, к контейнерным относится адаптер queue, который приспосабливает контейнер типа deque для использования его как стандартной очереди. Адаптеры упрощают обработку ряда сложных ситуаций.
Некоторые из алгоритмов и контейнеров используют специальный тип функции, именуемый предикатом. Есть две разновидности предикатов: унарные и бинарные. Унарный предикат принимает один аргумент, а бинарный — два аргумента. Эти функции возвращают результат true/ false, но условия, при которых они возвращают true или false, определяются вами. Некоторые алгоритмы применяют специальный тип бинарного предиката, который сравнивает два элемента. Эти функции сравнения возвращают true, если их первый аргумент меньше второго.
Два других элемента, используемых в библиотеке STL, — связыватели и отрицатели. Связыватель связывает аргумент с объектом-функцией. В библиотеке STL определены два связывателя: bind2nd() и bindisto. Отрицатель возвращает дополнение предиката. Существуют два отрицателя: notio и not2 (). Как связыватели, так и отрицатели увеличивают гибкость и универсальность библиотеки STL.