简介
函数对象是专门设计用于与函数类似语法的对象. std :: function的实例可以存储,复制和调用任何Callable目标 - 函数,lambda表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针.
声明
以下是std :: function的声明.
templateclass function;
C ++ 11
template< class R, class... Args >class function
参数
R : result_type.
argument_type : 如果sizeof ...(Args)== 1并且T是Args中的第一个也是唯一的类型.
示例
在下面的std :: function示例中.
#include#include 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 f_display = print_num; f_display(-9); std::function f_display_42 = []() { print_num(42); }; f_display_42(); std::function f_display_31337 = std::bind(print_num, 31337); f_display_31337(); std::function f_add_display = &Foo::print_add; const Foo foo(314159); f_add_display(foo, 1); std::function f_num = &Foo::num_; std::cout << "num_: " << f_num(foo) << '\n'; using std::placeholders::_1; std::function f_add_display2= std::bind( &Foo::print_add, foo, _1 ); f_add_display2(2); std::function f_add_display3= std::bind( &Foo::print_add, &foo, _1 ); f_add_display3(3); std::function f_display_obj = PrintNum(); f_display_obj(18);}
示例输出应该是这样的 :
-9 42 31337 314160 num_:314159 314161 314162 18
会员功能
非会员功能
Sr.No. | 成员函数 | 定义 |
---|---|---|
1 | (构造函数) | 它用于构造一个新的std: :function instance |
2 | (析构函数) | 它用于销毁std :: function实例 |
3 | operator = | 用于分配新目标 |
4 | swap | 用于交换内容 |
5 | 分配 | 它用于分配新目标 |
6 | operator bool | 用于检查是否包含有效目标 |
7 | operator() | 它用于调用目标 |
Sr.No.非成员函数定义1 std :: swap 它专门用于std :: swap算法2 operator == operator!= 它将std :: function与nullptr进行比较
运算符类
Sr.No. | 运算符类 | 定义 |
---|---|---|
1 | bit_and | 这是一个按位AND函数对象类 |
2 | bit_or | 这是一个按位OR函数对象类 |
3 | bit_xor | 这是一个按位XOR函数对象类 |
3 | divides | 这是一个除法函数对象类 |
4 | equal_to | 它是一个相等的函数对象类比较 |
5 | greater | 这是一个大于不等式比较的函数对象类 |
6 | greater_equal | 这是一个大于或等于的函数对象类等于比较 |
7 | less | 这是一个函数对象类,用于减少 - 比不等式比较 |
8 | less _equal | 这是一个比较小于或等于的函数对象类 |
9 | logical_and | 这是一个逻辑AND函数对象类 |
10 | logical_not | 这是一个合乎逻辑的NOT函数对象类 |
11 | logical_or | 这是一个逻辑OR函数对象类 |
12 | minus | 这是一个减法函数对象类 |
1 3 | modulus | 这是一个模数函数对象类 |
14 | multiplies | 这是一个乘法函数对象类 |
15 | negate | 这是一个负函数对象类 |
16 | not_equal_to | 它是用于非等式比较的函数对象类 |
17 | plus | 这是一个加法函数对象类 |