std ライブラリ以外の他のライブラリを 1 行で使用せずに、関数を別の関数のパラメータとして渡す最速かつ最短の方法は何ですか?
forloop(int x, *) {...}
つまり、関数の実行から for ループを実行する0
関数x
があるとしましょう*
。関数呼び出しは次のようになりますforloop(3, **() { std::cout "Hi!"; });
。
PS: *
and**
は、引数による関数型の単なるプレースホルダーであり、関数を引数として渡す方法です。
std ライブラリ以外の他のライブラリを 1 行で使用せずに、関数を別の関数のパラメータとして渡す最速かつ最短の方法は何ですか?
forloop(int x, *) {...}
つまり、関数の実行から for ループを実行する0
関数x
があるとしましょう*
。関数呼び出しは次のようになりますforloop(3, **() { std::cout "Hi!"; });
。
PS: *
and**
は、引数による関数型の単なるプレースホルダーであり、関数を引数として渡す方法です。
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::function
これは C++ TR1 および C++11 の一部ですstd::ptr_fun
して関数を適応させるあなたが示している構文は、C++11 でのみ機能します。以前の C++ バージョンでは、無名関数を定義する可能性はありません。