【Test】function 包装器 和 bind 包装器的使用
文章目录
- 1. function 包装器
- 1.1 包装器 function 的实际应用🖊
- 2. bind 包装器🔍
1. function 包装器
function
包装器 也叫作适配器。C++中的function
本质是一个类模板,也是一个包装器。
- 🐧
function
的用法如下:
#include <functional>template<class F, class T>
T useF(F f, T x)
{static int count = 0;cout << "count:" << ++count << endl;cout << "count:" << &count << endl;return f(x);
}double f(double i)
{return i / 2;
}struct Functor
{double operator()(double d){return d / 3;}
};int main()
{// 函数名cout << useF(f, 11.11) << endl;// 函数对象cout << useF(Functor(), 11.11) << endl;// lamber表达式cout << useF([](double d)->double { return d / 4; }, 11.11) << endl;return 0;
}
- 为什么
count
总是等于1
呢?
🍎 由于模板实例化的特性,每种不同类型的实例化版本会生成一个独立的函数定义,每个定义有自己独立的静态局部变量 count。
🍎 这就是为什么每次调用之后,输出的静态局部变量 count 总是等于 1,而不是累加的原因。
- 用包装器
function
包装之后的结果如下:🔍
🐧 此时只需要实例化模板一次即可;
1.1 包装器 function 的实际应用🖊
- LC_150_逆波兰表达式求值🍎
题目链接🔗
- 解题代码:
2. bind 包装器🔍
- 🐧
bind
包装器的介绍:
- 🐧
bind
可以调整参数的顺序,改变参数的个数。