2

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

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

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

4

3 回答 3

3

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"; });
}
于 2012-11-24T21:14:04.190 回答
0

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

于 2012-11-24T21:13:36.607 回答
0

您正在查看几个选项。

  1. 函数指针,C 风格的方式
  2. std::function这是 C++ TR1 和 C++11 的一部分
  3. 使用函子并std::ptr_fun调整您的功能

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

于 2012-11-24T21:17:36.570 回答