c++ - 这个 std::function 类似于

标签 c++

我正在练习 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/

相关文章:

c++ - 在 C++ 中使用 strtok

c++ - 如何防止初始化列表中的值错误?

c++ - Qt:告诉程序从放置它的同一目录中读取其他文件

c++ - boost::recursive_variant 接受 map,但拒绝 unordered_map

c++ - 如何制作一个也包含列表的节点

c++ - #define 中暂时使用 'reset' 命名空间

c++ - 在大型项目中以现代 CMake 方式添加 header

c++ - 无法在 Linux 上运行 to_string() 函数

c++我在读取二进制文件时得到重复的信息

c++ - 为什么在std::deque.erase()上引发异常?