将一个函数作为另一个函数的参数传递的最快最短的方法是什么,而不使用除一行中的std之外的其他库?
我的意思是假设我们有一个函数forloop(int x, *) {...}
,它运行0
到x
运行*
函数的for循环;函数调用应该类似于:forloop(3, **() { std::cout "Hi!"; });
。
PS:*
和**
只是逐个函数类型的占位符以及将函数作为参数传递的方式。
答案 0 :(得分:2)
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 :(得分:0)
如果您的函数是任何类的成员,请尝试“指向成员函数的指针”。
答案 2 :(得分:0)
您正在考虑几种选择。
std::function
,它是C ++ TR1和C ++ 11的一部分std::ptr_fun
来调整您的功能您展示的语法仅适用于C ++ 11。早期的C ++版本没有提供定义匿名函数的可能性。