Поделиться через


<functional>

Определяет стандартные функции библиотеки, что конструкция объекты функций справки, также известные как functors- и их привязки. Объект функции объект типа, который определяет operator(). Объект функции может быть указателем функции, но как правило, объект используется для хранения дополнительные сведения, можно обращаться во время вызова функции.

#include <functional>

Заметки

Алгоритмы требуют 2 типов объектов функции: унарный и бинарный. Унарные объекты функций требуется один аргумент, и бинарные объекты функций требуется 2 аргументов. Объект функции и указатели функций можно передавать в качестве предиката к алгоритму, но объекты функции также способна к адаптации и расширяют область, гибкость и повысить эффективность STL. Если, например, должны были должны быть привязанным к функции перед передавать с алгоритмом, указатель функции не может использоваться. Переходники функции преобразования указателей функций в способные к адаптации объекты функций, которые можно привязать к значению. Заголовок <functional> содержит также переходники функции-члена, позволяющие функции-члены, назначив как способные к адаптации объекты функций. Функции способна к адаптации, если они имеют объявления вложенных типов формулировать их аргументов и возвращаемых типов. Стандарт C++ требуется, чтобы эта приспособляемостьь реализована переполнен все стандартные классы объекта наследуется от базовых классов unary_function или binary_function. Объекты функций и их переходники позволяют STL в существующее приложение обновления и позволяют интегрировать STL в среды программирования C C++.

Реализация Visual C++ объектов включает функции в <functional>прозрачный functors оператора, специализации стандартных объектов функции и не принимает параметры шаблона и выполняет совершенное препровождение аргументов функции и повышает возврата результата. Эта функция часть стандартных техническую условий C ++14 черновик. Эти специализации шаблона не требуется указывать типы аргументов при вызове арифметических и сравнение, логических и побитовых functors оператора. Можно арифметический перегруженной функции, сравнение, логических и побитовых операторов для собственных типов или типов для разнородного получается из, а затем использовать прозрачные functors оператора в качестве аргументов функции. Например, если тип MyType реализует operator<, можно вызвать sort(my_collection.begin(), my_collection.end(), less<>()) вместо явного задания типа sort(my_collection.begin(), my_collection.end(), less<MyType>()).

Реализация C + 11 +/C ++14

Следующие функции добавляются в реализации Visual C++ + 11 +/C ++14:

  • сигнатура вызова имя возвращаемого типа и заключенную в скобки собой разделенный запятыми список аргументов ноль или более типов.

  • можно вызвать тип указатель на функцию, указателем на функцию-член, данных указателя на член, или тип класса, объекты которых могут быть расположено слева от оператора вызова функции.

  • можно вызвать объект объект можно вызвать типа.

  • тип оболочки вызова типа, содержащего вызываемую объектом и поддерживает операцию вызова, переадресует на этот объект.

  • программа-оболочка вызова объект типа оболочки вызова.

  • целевой объект можно вызвать объект удержатьый объектом программы-оболочки вызова.

Функция псевдодомен 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 и аргументы значения доставлены в качестве ссылки значения.

Классы

bad_function_call

Класс, в котором описывается исключение, вызванное, чтобы указать, что вызов operator() в объекте функция, так как объект не был пустым.

binary_negate

Класс шаблона функции-члена, обеспечивая инвертирует возвращаемое значение указанной бинарной функции.

binder1st

Шаблонный класс, предоставляющий данный конструктор, который выполняет преобразование бинарный объект функции в унарный объект функции путем связывания первый аргумент бинарной функции указанное значение.

binder2nd

Шаблонный класс, предоставляющий данный конструктор, который выполняет преобразование бинарный объект функции в унарный объект функции путем связывания второй аргумент функции бинарной указанное значение.

const_mem_fun_ref_t

Класс адаптера, который позволяет функцию-член const, не принимающего аргументов, для вызова функции в качестве унарного объект инициализирован с аргументом ссылки.

const_mem_fun_t

Класс адаптера, который позволяет функцию-член const, не принимающего аргументов, для вызова функции в качестве унарного объект инициализирован с аргументом указателя.

const_mem_fun1_ref_t

Класс адаптера, который позволяет функцию-член const, который принимает один аргумент, назначив как бинарный инициализированный объект функции с аргументом ссылки.

const_mem_fun1_t

Класс адаптера, который позволяет функцию-член const, который принимает один аргумент, назначив как бинарный инициализированный объект функции с аргументом указателя.

function

Класс, который создает экземпляры можно вызвать объект.

hash

Класс, вычисляющий хэш-код для значения.

is_bind_expression

Этот класс, если конкретный тип создается путем вызова bind.

is_placeholder

Этот класс, если конкретный тип заполнителя.

mem_fun_ref_t

Класс адаптера, который позволяет функцию-член non_const, не принимающего аргументов, для вызова функции в качестве унарного объект инициализирован с аргументом ссылки.

mem_fun_t

Класс адаптера, который позволяет функцию-член non_const, не принимающего аргументов, для вызова функции в качестве унарного объект инициализирован с аргументом указателя.

mem_fun1_ref_t

Класс адаптера, который позволяет функцию-член non_const, который принимает один аргумент, назначив как бинарный инициализированный объект функции с аргументом ссылки.

mem_fun1_t

Класс адаптера, который позволяет функцию-член non_const, который принимает один аргумент, назначив как бинарный инициализированный объект функции с аргументом указателя.

pointer_to_binary_function

Преобразование бинарный указатель функции в способную к адаптации бинарную функции.

pointer_to_unary_function

Преобразование унарный указатель функции в способную к адаптации унарную функции.

reference_wrapper

Класс, который создает экземпляры ссылку.

result_of

Структура, которая содержит тип возвращаемого значения создаватього программу-оболочку вызываемую объекта.

unary_negate

Класс шаблона функции-члена, обеспечивая инвертирует возвращаемое значение указанной унарной функции.

Функции

bind

Привязывает аргументы можно вызвать в объект.

bind1st

Шаблоны вспомогательная функция, которая создает переходника для преобразования бинарный объект функции в унарный объект функции путем связывания первый аргумент бинарной функции указанное значение.

bind2nd

Шаблоны вспомогательная функция, которая создает переходника для преобразования бинарный объект функции в унарный объект функции путем связывания второй аргумент функции бинарной указанное значение.

bit_and

Возвращает побитовые логические бинарный оператор&AND (2) параметров.

bit_not

Возвращает побитовых логических файлов (operator~) параметров.

bit_or

Возвращает операцию побитового логического ИЛИ (оператор|) 2 параметров.

bit_xor

Возвращает логическое operator^ (побитовое исключающее ИЛИ) 2 параметров.

cref

Построение const reference_wrapper из аргумента.

mem_fn

Демонстрирует простой программу-оболочку вызова.

mem_fun

Шаблонные вспомогательной функции, используемые для построения переходники объекта функции для функций-членов, инициализируемый аргументов указателя.

mem_fun_ref

Шаблоны вспомогательная функция, используемая для создания объекта переходники функции для функций-членов, инициализируемый аргументами ссылки.

not1

Возвращает со унарного предиката.

not2

Возвращает со бинарного предиката.

ptr_fun

Шаблоны вспомогательная функция, используемая для преобразования и унарные бинарные указателей функций, соответственно, в унарные и бинарные способные к адаптации функции.

ref

Создает reference_wrapper из аргумента.

буфер обмена

Обмен 2 объекта function.

структурам;

binary_function

Пустой базовый класс, определяющий типы, которые наследуются производным классом, предоставляющим бинарный объект функции.

делит

Класс предоставляет предопределенный объект функции, который выполняет арифметическую операцию деления для элементов типа указанного значения.

equal_to

Бинарный предикат, выполняет ли значение указанного типа равно другое значение данного типа.

большой

Бинарный предикат, выполняет ли значение указанного типа больше другого значения этого типа.

greater_equal

Бинарный предикат, выполняет ли значение указанного типа больше или равно другому значения данного типа.

less

Бинарный предикат, выполняет ли значение указанного типа, чем другие значения этого типа.

less_equal

Бинарный предикат, выполняет ли значение указанного типа меньше или равно другому значения данного типа.

logical_and

Класс предоставляет предопределенный объект функции, который выполняет логическую операцию связи для элементов типа и тестов указанного значения правды или ложность результата.

logical_not

Класс предоставляет предопределенный объект функции, который выполняет логическую операцию отрицания над элементами типа и тестов указанного значения правды или ложность результата.

logical_or

Класс предоставляет предопределенный объект функции, который выполняет логическую операцию рассеченности элементов типа и тестов указанного значения правды или ложность результата.

отрицательный

Класс предоставляет предопределенный объект функции, выполняющие арифметические операции вычитания для элементов типа указанного значения.

modulus

Класс предоставляет предопределенный объект функции, выполняющие арифметические операции модуля для элементов типа указанного значения.

умножает

Класс предоставляет предопределенный объект функции, выполняющие арифметические операции умножения элементов типа указанного значения.

инвертирует

Класс предоставляет предопределенный объект функции у элемента, который возвращает значение.

not_equal_to

Бинарный предикат, выполняет ли значение указанного типа не равно другое значение данного типа.

добавочный

Класс предоставляет предопределенный объект функции, который выполняет арифметическую операцию сложения для элементов типа указанного значения.

unary_function

Пустой базовый класс, определяющий типы, которые наследуются производным классом, который предоставляет унарный объект функции.

Объекты

_1. _M

Местозаполнители для заменяемых аргументов.

Операторы

operator==

Сравнение на равенство отклоняет вызываемую объектов.

operator!=

Сравнение отклоняет неравенства вызываемую объектов.

См. также

Ссылки

Потокобезопасность в стандартной библиотеке C++

Библиотека стандартных шаблонов

Другие ресурсы

члены<функционально>

Файлы заголовков стандартных библиотек C++