什么是 std::function
std::function是一个函数包装器模板
该函数包装器模板能包装任何类型的可调用元素
- 需要引入头文件
#include <functional>
简单使用
#include <iostream>
#include <vector>
#include <functional>
double MultBy2(double num) {
return num * 2;
}
double Domath(std::function<double(double)> func,
double num) {
return func(num);
}
int main() {
// 定义模板
std::function<double(double)> func;
// 容器
std::vector<std::function<double(double)>> vec;
// 直接调用
auto mut2 = MultBy2;
std::cout << "3 * 2 =" <<
mut2(3) << std::endl;
// lambda表达式
std::cout << "4 * 2 =" <<
Domath([](double e) -> double {
return e * 2;
}, 4) << std::endl;
std::cout << "4 ^ 2 =" <<
Domath([](double e) -> double {
return e * e;
}, 4) << std::endl;
func = ([](double e) -> double {
return e * 2;
});
vec.push_back(func);
func = ([](double e) -> double {
return e * 3;
});
vec.push_back(func);
vec.push_back([](double e)->double {
return e*e*e;
});
std::cout << "10 * 2 =" <<
vec[0](10) << std::endl;
std::cout << "10 * 3 =" <<
vec[1](10) << std::endl;
std::cout << "10 ^ 3 =" <<
vec[2](10) << std::endl;
return 0;
}
3 * 2 =6
4 * 2 =8
4 ^ 2 =16
10 * 2 =20
10 * 3 =30
10 ^ 3 =1000