如何将函数作为参数传递

How do I pass a function as parameter?

本文关键字:参数传递 函数      更新时间:2023-10-16

在一行中不使用 std 库以外的其他库的情况下,将函数作为另一个函数的参数传递的最快和最短方法是什么?

我的意思是,假设我们有一个函数forloop(int x, *) {...}运行从0x运行*函数的for循环;函数调用应该是这样的:forloop(3, **() { std::cout "Hi!"; });

PS:***只是逐个参数类型的占位符以及将函数作为参数传递的方式。

C++11 提供匿名函数:

forloop(3, []{ std::cout "Hi!"; });

示例

#include <iostream>
#include <functional>
 void forloop(int times, std::function<void()> f) {
     for(int i = 0; i < times; i++) {
         f();
     }
 }
int main() {
    forloop(3, [] () { std::cout << "Hello world"; });
}

如果您的函数是任何类的成员,请尝试"指向成员函数的指针"。

您正在寻找几个选项。

  1. 函数指针,C 样式方式
  2. std::function是 TR1 和 C++11 C++
  3. 的一部分
  4. 使用函子和std::ptr_fun来调整函数

您显示的语法仅适用于 C++11。早期C++版本不提供定义匿名函数的可能性。