传递函数作为另一个函数的参数的最快和最短的方法是什么,而不是在一行中使用除std之外的其他库?如何传递函数作为参数?
我的意思是让我们说我们有一个功能forloop(int x, *) {...}
运行for循环从0
到x
运行*
功能;函数调用应该是这样的:forloop(3, **() { std::cout "Hi!"; });
。
PS:*
和**
是用于功能逐参数类型和传递函数作为参数的方式只是占位符。
传递函数作为另一个函数的参数的最快和最短的方法是什么,而不是在一行中使用除std之外的其他库?如何传递函数作为参数?
我的意思是让我们说我们有一个功能forloop(int x, *) {...}
运行for循环从0
到x
运行*
功能;函数调用应该是这样的: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"; });
}
如果您的函数是任何类的成员,请尝试“指向成员函数”。
您正在看的几个选项。
std::ptr_fun
C++ TR1的一部分,C++ 11语法你是示出C形风格的方式
std::function
只会使用C++ 11。早期的C++版本不提供定义匿名函数的可能性。我没有使用任何语法,我只是发明了它。什么将'*'和'**'替换(如果我有C++ 11)? – Shoe
你应该使用['for_each'](http://en.cppreference.com/w/cpp/algorithm/for_each)。 –