ラムダ関数を使ってstd::condition_variable
wait()関数に渡しましたが、そうではありません。パラメータを受け取らないラムダ関数を使用していますが、私にとってはすべてが明確です。しかし、私は完全にどのようにパラメータリストを持つlamdba関数が使用されて理解していない。パラメータが表示されたラムダを使用していますか?パラメータを渡すには?パラメータを持つC++ 11ラムダ関数 - パラメータを渡す方法
答えて
表示ラムダが使用されていますか?パラメータを渡すには?
まさに呼び出し可能オブジェクトの他のタイプと同じように動作します:
#include <iostream>
int main()
{
auto l = [] (int i) { std::cout << "The answer is " << i; };
l(42);
}
また、あなたがそれを呼び出すために変数にラムダを保存する必要がないことに、注意してください。以下は、上記のプログラムを書き換えるための別の方法である:
#include <iostream>
int main()
{
[] (int i) { std::cout << "The answer is " << i; } (42);
// ^^^^
// Invoked immediately!
}
ラムダ関数(いわゆる「ラムダ閉鎖」)のタイプは、コンパイラによって定義され、コールオペレータとのファンクタであります署名は、ラムダを定義するときに指定するものです。したがって、ファンクタを呼び出すのとまったく同じようにラムダを呼び出すことができます(つまり、関数や呼び出し可能なオブジェクトと同じように)。
したがって、ラムダをオブジェクトに割り当てる場合は、auto
を使用してコンパイラに型を推定させることをお勧めします。あなたはしたくないか、auto
、あなたかもしれ使用できない場合は、次の(キャプチャラムダは、関数ポインタに変換ではありません)非キャプチャラムダのため
使用関数ポインタを。上記の場合では、このように、次のようにも動作します:
#include <iostream> int main() { void (*f)(int) = [] (int i) { std::cout << "The answer is " << i; }; f(42); }
使用
std::function
(ラムダがキャプチャされた場合でも、これは、常に可能です):#include <iostream> #include <functional> int main() { std::function<void(int)> f = [] (int i) { std::cout << "The answer is " << i; }; f(42); }
私は誰もが簡単に説明できる人が大好きです:) ありがとうAndy !! –
@JohnnyPauling:ありがとうございました:) –
auto lambda = [] (int a, int b) { return a + b; };
assert(lambda(1, 2) == 3);
ああ!ここで自動的にint(* p)(int、int)を隠すか? – Littlebitter
@Littlebitter lambdaのタイプは実装定義であるため、 'auto'が必要です。いくつかのラムダ(何も取り込まないもの)を関数ポインタに変換することはできますが、実際の型ではありません( 'int'を' long'に変換する方法に似ていますが、 'int'は'ロング)。 –
であり、ラムダが[](int a、int b) - > int {return a + b; }; autoを使わずにタイプIの関数変数へのポインタを作成することは可能でしょうか? – Littlebitter
あなたがドン」あなたのラムダを保持するための変数が必要でもあります - それを直接呼び出すことができます:
std::cout << [](int n) { return n + 1 ; } (99) << std::endl ;
- 1. C++ 11ラムダC関数ポインタ
- 2. C++ラムダ関数を渡す
- 3. AWSラムダ関数にパラメータを渡す方法
- 4. ラムダ式をパラメータとしてC++テンプレートに渡す方法
- 5. パラメータとして任意のラムダ関数を渡して使用する方法
- 6. クラスパラメータを関数パラメータに渡す方法
- 7. C++でラムダ関数のオーバーヘッドを理解する11
- 8. C++ 11コールバック関数としてのラムダ式
- 9. パラメータでラムダを渡す
- 10. ラムダ(C++ 11)をテンプレート関数に渡すにはどうしたらいいですか?
- 11. C#:テキストボックスから関数に数学関数を渡す方法
- 12. 同じパラメータを複数の関数に渡す方法は?
- 13. C++ 11ラムダ取り込みリスト[=]テンプレート関数の参照は、参照
- 14. ARC ObjectiveC++でC++ 11ラムダ関数を使用する方法 - 正しく行うには?
- 15. パラメータを渡して関数を呼び出す方法は?
- 16. C++ 11:std :: bindがラムダでクラッシュする
- 17. C++ 11:variadic関数のパラメータ型の計算
- 18. drupalテーマ関数のリファレンスでパラメータを渡す方法は?
- 19. インラインJavaScript関数にパラメータを渡す方法
- 20. のonclick関数内で文字列パラメータを渡す方法
- 21. JQuery関数のパラメータとしてイベントを渡す方法
- 22. 約束事関数にパラメータを渡す方法
- 23. boost :: thread_groups :: create_thread()に関数のパラメータを渡す方法
- 24. 述語を関数パラメータとして渡す方法
- 25. ユニオンをパラメータとして関数に渡す方法
- 26. 関数のパラメータとしてタプルを渡す方法
- 27. 正規表現の解析関数のパラメータをPython関数に渡す方法
- 28. vimとC++ 11ラムダ:自動インデント
- 29. イテレータを関数パラメータとして渡す
- 30. C++ 03のfor_eachにメンバー関数を渡す(ブーストなし、C++ 11なし)
lambdaで見つけたリソースは、パラメータを取る。 – chris
@chris私はパラメータを取るためにhpwを知っています - [](int parameter){lambda body}、私はこのラムダを使用しますか? – Littlebitter
関数とまったく同じです。 – chris