2

std ライブラリ以外の他のライブラリを 1 行で使用せずに、関数を別の関数のパラメータとして渡す最速かつ最短の方法は何ですか?

forloop(int x, *) {...}つまり、関数の実行から for ループを実行する0関数xがあるとしましょう*。関数呼び出しは次のようになりますforloop(3, **() { std::cout "Hi!"; });

PS: *and**は、引数による関数型の単なるプレースホルダーであり、関数を引数として渡す方法です。

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 に答える