头文件
#include <functional>
功能简介
functional可以用来创建指向函数、函数对象或lambda表达式的类型
被称为多态函数包装器
可以当做函数指针,也可以用作实现函数回调的函数参数
示例代码:
#include <iostream>
#include <functional>
#include <string>
#include <vector>
#include <numeric>
using namespace std;
void func( int num, const string &s )
{
cout << num << ":" << s << endl;
}
void print_num( int num )
{
cout << num << endl;
}
void func_param( const vector<int> &v, function<void( int )> f )
{
for( auto i : v )
{
f( i );
}
}
int main()
{
cout << "use auto:\n";
auto f1 = func;
f1( 1, "biu001" );
cout << typeid( f1 ).name() << endl;
cout << endl;
cout << "use function as function pointer:\n";
function<void( int, const string& )> f2 = func;
f2( 2, "biu002" );
cout << typeid( f2 ).name() << endl;
cout << endl;
cout << "use function as function param\n";
vector<int> ivec( 10 );
iota( begin( ivec ), end( ivec ), 1 );
function<void( int )> f3 = print_num;
func_param( ivec, f3 );
system( "pause" );
return 0;
}
运行结果: