Библиотека C ++ - <функциональная>
Введение
Функциональные объекты - это объекты, специально разработанные для использования с синтаксисом, аналогичным синтаксису функций. Экземпляры std :: function могут хранить, копировать и вызывать любую вызываемую цель - функции, лямбда-выражения, выражения привязки или другие объекты функций, а также указатели на функции-члены и указатели на элементы данных.
Декларация
Ниже приводится объявление для std :: function.
template<class >
class function;
C ++ 11
template< class R, class... Args >
class function<R(Args...)>
Параметры
R - тип_результата.
argument_type - T, если sizeof ... (Args) == 1 и T - первый и единственный тип в Args.
пример
В приведенном ниже примере для std :: function.
#include <functional>
#include <iostream>
struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << '\n'; }
int num_;
};
void print_num(int i) {
std::cout << i << '\n';
}
struct PrintNum {
void operator()(int i) const {
std::cout << i << '\n';
}
};
int main() {
std::function<void(int)> f_display = print_num;
f_display(-9);
std::function<void()> f_display_42 = []() { print_num(42); };
f_display_42();
std::function<void()> f_display_31337 = std::bind(print_num, 31337);
f_display_31337();
std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
const Foo foo(314159);
f_add_display(foo, 1);
std::function<int(Foo const&)> f_num = &Foo::num_;
std::cout << "num_: " << f_num(foo) << '\n';
using std::placeholders::_1;
std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );
f_add_display2(2);
std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 );
f_add_display3(3);
std::function<void(int)> f_display_obj = PrintNum();
f_display_obj(18);
}
Пример вывода должен быть таким -
-9
42
31337
314160
num_: 314159
314161
314162
18
Функции-члены
Sr. No. | Функции-члены | Определение |
---|---|---|
1 | (конструктор) | Он используется для создания нового экземпляра std :: function |
2 | (деструктор) | Он используется для уничтожения экземпляра std :: function |
3 | оператор = | Используется для назначения новой цели |
4 | замена | Используется для обмена содержимым |
5 | назначать | Используется для назначения новой цели |
6 | оператор bool | Он используется для проверки наличия допустимой цели |
7 | оператор () | Он используется для вызова цели |
Функции, не являющиеся членами
Sr. No. | Функции, не являющиеся членами | Определение |
---|---|---|
1 | std :: swap | Он специализируется на алгоритме std :: swap |
2 | оператор == оператор! = | Он сравнивает std :: function с nullptr |
Классы операторов
Sr. No. | Классы операторов | Определение |
---|---|---|
1 | bit_and | Это класс объектов с функцией побитового И |
2 | bit_or | Это класс объекта с функцией побитового ИЛИ |
3 | bit_xor | Это класс объекта побитовой функции XOR. |
3 | разделяет | Это объектный класс функции деления |
4 | равно | Это класс функционального объекта для сравнения на равенство |
5 | больше | Это класс функциональных объектов для сравнения с большим неравенством. |
6 | больше_равно | Это класс функционального объекта для сравнения "больше или равно" |
7 | Меньше | Это класс функциональных объектов для сравнения с меньшим неравенством. |
8 | less_equal | Это класс функционального объекта для сравнения «меньше или равно» |
9 | логическое_и | Это логический объектный класс функции И |
10 | логическое_не | Это логический класс объекта функции НЕ. |
11 | логический_или | Это логический класс объекта функции ИЛИ |
12 | минус | Это объектный класс функции вычитания |
13 | модуль | Это объектный класс функции модуля |
14 | умножается | Это объектный класс функции умножения |
15 | отрицать | Это объектный класс отрицательной функции |
16 | not_equal_to | Это класс функционального объекта для сравнения без равенства |
17 | плюс | Это дополнительный класс объекта функции |