ラムダ関数
メニューを表示するにはスワイプしてください
**ラムダ関数(無名関数)**は、コード内でインラインで小さな名前のない関数を作成できる機能。短期間だけ必要なシンプルな関数を、別途名前付き関数として定義せずに利用したい場合に特に有用。
ラムダ関数が役立つ主な理由:
ラムダ関数を使うことで、短く簡潔なコードを記述可能。数行で表現できる処理に最適。
周囲のスコープから変数をキャプチャでき、親関数内の変数をラムダ内で利用可能。
ラムダは他の関数への引数として渡すことができ、std::for_each や std::sort などの関数で便利に利用可能。
ラムダ関数の作成方法
次の構文を使ってラムダ関数を作成可能。
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
ラムダ関数のキャプチャ句は、ラムダ関数の外側(周囲のスコープ)にあるどの変数をラムダ関数内でアクセス・使用できるかを指定するためのものです。キャプチャ句には主に3つの種類があります。
-
何もキャプチャしない
[]:ラムダ関数は周囲のスコープの変数にアクセスできません。 -
特定の変数を値渡しでキャプチャ
[var1, var2, ...]:ラムダ関数は周囲のスコープの特定の変数に値渡しでアクセスできます。 -
特定の変数を参照渡しでキャプチャ
[&var1, &var2, ...]:ラムダ関数は周囲のスコープの特定の変数に参照渡しでアクセスできます。
main.cpp
1234567891011121314#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // With explicit return type (`int`) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << result << std::endl; }
関数は次のように構築されます:
-
ラムダ関数は
multiplier変数を参照でキャプチャします([&multiplier]); -
戻り値の型
-> intは、ラムダ関数が整数を返すことを指定します; -
ラムダは引数
5で即時に呼び出され、その結果がresult変数に格納されます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください