Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ラムダ関数 | いくつかの高度なトピック
C++関数

bookラムダ関数

メニューを表示するにはスワイプしてください

**ラムダ関数(無名関数)**は、コード内でインラインで小さな名前のない関数を作成できる機能。短期間だけ必要なシンプルな関数を、別途名前付き関数として定義せずに利用したい場合に特に有用。

ラムダ関数が役立つ主な理由:

簡潔さ
expand arrow

ラムダ関数を使うことで、短く簡潔なコードを記述可能。数行で表現できる処理に最適。

ローカルスコープ
expand arrow

周囲のスコープから変数をキャプチャでき、親関数内の変数をラムダ内で利用可能。

柔軟性
expand arrow

ラムダは他の関数への引数として渡すことができ、std::for_eachstd::sort などの関数で便利に利用可能。

ラムダ関数の作成方法

次の構文を使ってラムダ関数を作成可能。

lambda_function.h

lambda_function.h

copy
123
[capture_clause](parameter_list) -> return_type { // function body }

ラムダ関数のキャプチャ句は、ラムダ関数の外側(周囲のスコープ)にあるどの変数をラムダ関数内でアクセス・使用できるかを指定するためのものです。キャプチャ句には主に3つの種類があります。

  • 何もキャプチャしない []:ラムダ関数は周囲のスコープの変数にアクセスできません。

  • 特定の変数を値渡しでキャプチャ [var1, var2, ...]:ラムダ関数は周囲のスコープの特定の変数に値渡しでアクセスできます。

  • 特定の変数を参照渡しでキャプチャ [&var1, &var2, ...]:ラムダ関数は周囲のスコープの特定の変数に参照渡しでアクセスできます。

main.cpp

main.cpp

copy
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 変数に格納されます。

question mark

ラムダ関数におけるキャプチャ句の目的は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  4
some-alt