1、绑定一个函数
#include <iostream>
#include <string.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <stack>
#include <set>
#include <functional>
#include <iostream>
using namespace std;
//普通函数
void func(void)
{
std::cout << __FUNCTION__ << std::endl;
}
//静态类成员函数
class Foo
{
public:
static int foo_func(int a)
{
std::cout << __FUNCTION__ << "(" << a << ") ->:";
return a;
}
};
int main(void)
{
std::function<void(void)> fr = func;
fr();
std::function<int(int)> fr1 = Foo::foo_func;
std::cout << fr1(456) << std::endl;
}
2、作为函数入参
#include <iostream>
#include <string.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <stack>
#include <set>
#include <functional>
#include <iostream>
using namespace std;
//传参函数
void Func(int x, const function<void(int)> &f)
{
f(x);
}
//执行函数
void Print(int x)
{
cout << x << endl;
}
int main(void)
{
//调用传参
for (int i = 0; i < 2; ++i)
{
Func(i, Print);
}
return 0;
}
3、存储 lambda
int main(void)
{
//存储 lambda
function<void()> f = []()
{ cout << "luochao" << endl; };
f();
return 0;
}