我正在练习 lambda,我发现了这段代码:
auto make_fibo()
{
return [](int n) {
std::function<int(int)> recurse;
recurse = [&](int n){
return (n<=2)? 1 : recurse(n-1) + recurse(n-2);
};
return recurse(n);
};
}
我不知道是这个,确切地说,不认识他std::function<int(int)> recurse;
在搜索并阅读此内容后:
http://www.cplusplus.com/reference/functional/function/
我的问题是?例如,这个 std::function 与此类似:
typedef int (*FredMemFn)(int i);
谢谢你,对英语表示抱歉。
最佳答案
std::function
类型是函数指针的泛化。 C++ 对函数、成员函数和函数对象进行了区分(如果您还没有听说过最后一个,请查一下!它们非常酷!),因此普通的函数指针根本无法指向C++ 中可以像函数一样调用的事物类型。 std::function 本质上是一种类似于函数指针的类型,它可以指向您可以像函数一样调用的任何内容。要使用 std::function
指向参数类型 Arg1、Arg2、...、ArgN
和返回类型 Ret
的内容,请声明一个类型变量
std::function<Ret (Arg1, Arg2, ..., ArgN)>
关于c++ - 这个 std::function 类似于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533474/