Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определяет функции стандартной библиотеки C++, которые помогают создавать объекты функций, также известные как воронки и их привязыватели. Объект-функция — это объект типа, который определяет operator(). Объект-функция может быть указателем на функцию, но, как правило, он используется для хранения дополнительных сведений, которые могут потребоваться при вызове функции.
Требования
Заголовок:<функциональный>
Пространство имен: std
Замечания
Алгоритмы требуют двух типов объектов-функций: унарных и двоичных объектов. Унарным объектам-функциям требуется один аргумент, и бинарным — два аргумента. Объект-функция и указатели на функции могут передаваться как предикат для алгоритма, но объекты-функции также могут настраиваться и расширяют область, а также повышают гибкость и эффективность стандартной библиотеки C++. Если, например, требуется привязать значение к функции перед передачей алгоритму, указатель на функцию не может использоваться. Адаптеры функций преобразуют указатели на функции в гибкие объекты-функции, которые можно привязать к значению. Функциональный> заголовок <также содержит адаптеры функций-членов, которые позволяют вызывать функции-члены в качестве адаптируемых объектов функций. Функции могут настраиваться, если у них есть объявления вложенных типов, указывающие типы аргументов и типы возвращаемого значения. Объекты-функции и их адаптеры позволяют стандартной библиотеке C++ обновить существующие приложения и облегчают интеграцию библиотеки в среду программирования C++.
Реализация объектов функции в <функциональном> режиме включает в себя прозрачные воронки операторов, которые являются специализациями стандартных объектов функций и не принимают параметров шаблона, и выполняют идеальную пересылку аргументов функции и идеальный возврат результата. Эти специализации шаблона не требуют указывать типы аргументов при вызове функторов арифметических операций, операций сравнения, логических операций и функторов побитовых операторов. Вы можете перегружать арифметические, логические, побитовые операторы и операторы сравнения для собственных типов или сочетания разнородных типов, а затем использовать прозрачные функторы операторов в качестве аргументов функции. Например, если тип MyType реализует operator<, вы можете вызвать sort(my_collection.begin(), my_collection.end(), less<>()) вместо явного указания типа sort(my_collection.begin(), my_collection.end(), less<MyType>()).
Следующие функции добавляются в C++11, C++14 и C++17:
Сигнатура вызова — имя типа возвращаемого значения, за которым следует список разделенных запятыми из нуля или более типов аргументов, заключенный в круглые скобки.
Вызываемый тип — это указатель на функцию, указатель на функцию-член, указатель на данные-член или тип класса, объекты которого могут размещаться непосредственно слева от оператора вызова функции.
Вызываемый объект — это объект вызываемого типа.
Тип оболочки вызова — это тип, который содержит вызываемый объект и поддерживает операцию вызова, которая перенаправляет на этот объект.
Оболочка вызова — это объект типа оболочки вызова.
Целевой объект — это вызываемый объект, который содержится в объекте оболочки вызова.
Псевдофункция INVOKE(f, t1, t2, ..., tN) означает одно из следующего:
(t1.*f)(t2, ..., tN), еслиf— это указатель на функцию-член классаT, аt1— это объект типаT, ссылка на объект типаTили ссылка на объект типа, производного отT.((*t1).*f)(t2, ..., tN), еслиf— это указатель на функцию-член классаT, аt1не является одним из типов, описанных в предыдущем пункте.t1.*f, если N == 1, аf— это указатель на данные-член классаTиt1— это объект типаT, ссылка на объект типаTили ссылка на объект типа, производного отT.(*t1).*f, если N == 1, аf— это указатель на данные-член классаTиt1не является одним из типов, описанных в предыдущем пункте.В остальных случаях —
f(t1, t2, ..., tN).
Псевдофункция INVOKE(f, t1, t2, ..., tN, R) означает INVOKE(f, t1, t2, ..., tN), неявно преобразованный в R.
Если у оболочки вызова есть слабый результирующий тип, тип его члена result_type основан на типе T целевого объекта оболочки, как показано ниже:
Если
T— указатель на функцию,result_type— это синоним возвращаемого типаT.Если
T— указатель на функцию-член,result_type— это синоним возвращаемого типаT.Если
T— тип класса с типом членаresult_type,result_type— это синонимT::result_type.В противном случае член
result_typeне существует.
У каждой оболочки вызова есть конструктор перемещения и конструктор копирования. Простая оболочка вызова — это оболочка с оператором присваивания, конструктор копирования, конструктор перемещения и оператор присваивания которой не вызывают исключений. Пересылающая оболочка вызова — это оболочка, которая может вызываться с помощью списка произвольных аргументов и которая предоставляет аргументы вызываемому объекту в оболочке в виде ссылок. Все аргументы rvalue предоставляются как ссылки rvalue, а аргументы lvalue — как ссылки lvalue.
Участники
Классы
| Имя | Описание |
|---|---|
| bad_function_call | Класс, который описывает исключение, указывающий, что вызов operator() в объекте-function завершился ошибкой, так как объект был пуст. |
| binary_negate | Шаблон класса, предоставляющий функцию-член, которая отрицает возвращаемое значение указанной двоичной функции. (Не рекомендуется в C++17.) |
| binder1st | Шаблон класса, предоставляющий конструктор, который преобразует двоичный объект функции в унарный объект функции путем привязки первого аргумента двоичной функции к указанному значению. (Не рекомендуется использовать C++11, удалено в C++17.) |
| binder2nd | Шаблон класса, предоставляющий конструктор, который преобразует двоичный объект функции в унарный объект функции путем привязки второго аргумента двоичной функции к указанному значению. (Не рекомендуется использовать C++11, удалено в C++17.) |
| boyer_moore_horspool_searcher | |
| boyer_moore_searcher | |
| const_mem_fun_ref_t | Класс адаптера, который позволяет вызывать функцию-член-константу, не принимающую аргументы, как объект унарной функции при инициализации с ссылочным аргументом. (Не рекомендуется использовать C++11, удалено в C++17.) |
| const_mem_fun_t | Класс адаптера, который позволяет вызывать функцию-член-константу, не принимающую аргументы, как объект унарной функции при инициализации с аргументом указателя. (Не рекомендуется использовать C++11, удалено в C++17.) |
| const_mem_fun1_ref_t | Класс адаптера, который позволяет вызывать функцию-член-константу, принимающую один аргумент, как объект бинарной функции при инициализации с ссылочным аргументом. (Не рекомендуется использовать C++11, удалено в C++17.) |
| const_mem_fun1_t | Класс адаптера, который позволяет вызывать функцию-член-константу, принимающую один аргумент, как объект бинарной функции при инициализации с аргументом указателя. (Не рекомендуется использовать C++11, удалено в C++17.) |
| default_searcher | |
| function | Класс, создающий оболочку для вызываемого объекта. |
| hash | Класс, который вычисляет хэш-код для значения. |
| is_bind_expression | Класс, который проверяет, можно ли создать определенный тип, вызывая bind. |
| is_placeholder | Класс, который проверяет, является ли определенный тип заполнителем. |
| mem_fun_ref_t | Класс адаптера, который позволяет non_const функции-члену без аргументов вызываться как унарный объект функции при инициализации с помощью ссылочного аргумента.(Не рекомендуется использовать C++11, удалено в C++17.) |
| mem_fun_t | Класс адаптера, который позволяет non_const функции-члену без аргументов вызываться как унарный объект функции при инициализации с аргументом указателя.(Не рекомендуется использовать C++11, удалено в C++17.) |
| mem_fun1_ref_t | Класс адаптера, который позволяет non_const функции-члену, принимающую один аргумент, вызываться как двоичный объект функции при инициализации с помощью ссылочного аргумента.(Не рекомендуется использовать C++11, удалено в C++17.) |
| mem_fun1_t | Класс адаптера, который позволяет non_const функции-члену, принимающую один аргумент, вызываться как двоичный объект функции при инициализации с аргументом указателя.(Не рекомендуется использовать C++11, удалено в C++17.) |
| pointer_to_binary_function | Преобразует указатель на бинарную функцию в адаптируемую бинарную функцию. (Не рекомендуется использовать C++11, удалено в C++17.) |
| pointer_to_unary_function | Преобразует указатель на унарную функцию в адаптируемую унарную функцию. (Не рекомендуется использовать C++11, удалено в C++17.) |
| reference_wrapper | Класс, который создает оболочку для ссылки. |
| unary_negate | Шаблон класса, предоставляющий функцию-член, которая отрицает возвращаемое значение указанной унарной функции. (Не рекомендуется в C++17.) |
Функции
| Имя | Описание |
|---|---|
| bind | Привязывает аргументы к вызываемому объекту. |
| bind1st | Вспомогательная функция шаблона, которая создает адаптер для преобразования объекта бинарной функции в объект унарной функции, привязывая первый аргумент бинарной функции к указанному значению. (Не рекомендуется использовать C++11, удалено в C++17.) |
| bind2nd | Вспомогательная функция шаблона, которая создает адаптер для преобразования объекта бинарной функции в объект унарной функции, привязывая второй аргумент бинарной функции к указанному значению. (Не рекомендуется использовать C++11, удалено в C++17.) |
| bit_and | Возвращает битовое значение AND (двоичное operator&) двух параметров. |
| bit_not | Возвращает битовое дополнение (operator~) параметра.(Добавлено в C++14.) |
| bit_or | Возвращает битовую ИЛИ (operator|) двух параметров. |
| bit_xor | Возвращает битовое XOR (operator^) двух параметров. |
| cref | Создает конструкцию reference_wrapper из аргумента. |
| invoke | |
| mem_fn | Создает простую оболочку вызова. |
| mem_fun | Вспомогательные функции шаблона, которые используются для создания адаптеров объекта-функции для функций-членов при инициализации с аргументами указателя. (Не рекомендуется использовать C++11, удалено в C++17.) |
| mem_fun_ref | Вспомогательная функция шаблона, которая используется для создания адаптеров объекта-функции для функций-членов при инициализации с ссылочными аргументами. |
| not1 | Возвращает дополнение унарного предиката. (Не рекомендуется в C++17.) |
| not2 | Возвращает дополнение бинарного предиката. (Не рекомендуется в C++17.) |
| not_fn | Возвращает дополнение результата объекта функции. (Добавлено в C++17.) |
| ptr_fun | Вспомогательная функция шаблона, которая используется для преобразования указателей на унарные и бинарные функция в унарные и бинарные адаптируемые функции соответственно. (Не рекомендуется использовать C++11, удалено в C++17.) |
| ref; | Создает reference_wrapper из аргумента. |
| swap | Меняет местами два объекта function. |
Структуры
| Имя | Описание |
|---|---|
| binary_function | Пустой базовый класс, определяющий типы, которые могут наследоваться производным классом, предоставляющим объект бинарной функции. (Не рекомендуется использовать C++11, удалено в C++17.) |
| divides | Этот класс предоставляет стандартный объект-функцию, который выполняет арифметическую операцию деления элементов заданного типа значения. |
| equal_to | Бинарный предикат, который проверяет, равно ли значение заданного типа другому значению этого типа. |
| greater | Бинарный предикат, который проверяет, больше ли значение заданного типа другого значения этого типа. |
| greater_equal | Бинарный предикат, который проверяет, больше или равно ли значение заданного типа другого значения этого типа. |
| less | Бинарный предикат, который проверяет, меньше ли значение заданного типа другого значения этого типа. |
| less_equal | Бинарный предикат, который проверяет, меньше или равно ли значение заданного типа другого значения этого типа. |
| logical_and | Этот класс предоставляет стандартный объект-функцию, который применяет логическую операцию конъюнкции к элементам заданного типа значения и проверяет истинность или ложность результата. |
| logical_not | Этот класс предоставляет стандартный объект-функцию, который применяет логическую операцию отрицания к элементам заданного типа значения и проверяет истинность или ложность результата. |
| logical_or | Этот класс предоставляет стандартный объект-функцию, который применяет логическую операцию логического сложения к элементам заданного типа значения и проверяет истинность или ложность результата. |
| minus | Этот класс предоставляет стандартный объект-функцию, который выполняет арифметическую операцию вычитания для элементов заданного типа значения. |
| остаток от деления | Этот класс предоставляет стандартный объект-функцию, который выполняет арифметическую операцию модуля для элементов заданного типа значения. |
| multiplies | Этот класс предоставляет стандартный объект-функцию, который выполняет арифметическую операцию умножения для элементов заданного типа значения. |
| negate | Этот класс предоставляет стандартный объект-функцию, который возвращает отрицательное значение элемента. |
| not_equal_to | Бинарный предикат, который проверяет, не равно ли значение заданного типа другому значению этого типа. |
| plus | Этот класс предоставляет стандартный объект-функцию, который выполняет арифметическую операцию сложения для элементов заданного типа значения. |
| unary_function | Пустой базовый класс, определяющий типы, которые могут наследоваться производным классом, предоставляющим объект унарной функции. (Не рекомендуется использовать C++11, удалено в C++17.) |
Объект
| Имя | Описание |
|---|---|
| _1.._M | Заполнители для подстановочных аргументов. |
Операторы
| Имя | Описание |
|---|---|
| operator== | Запрещает сравнение вызываемых объектов на равенство. |
| оператор!= | Запрещает сравнение вызываемых объектов на неравенство. |
См. также
Справочник по файлам заголовков
Потокобезопасность в стандартной библиотеке C++
Справочник по стандартной библиотеке C++