C++ ラムダ式は、関数スコープ変数を保存し、関数からアクセスできるようにするクロージャーをサポートしています。構文は [capture-list] (parameters) -> return-type { function-body } です。 Capture-list はキャプチャする変数を定義します。[=] を使用してすべてのローカル変数を値によってキャプチャするか、[&] を使用してすべてのローカル変数を参照によってキャプチャするか、[variable1, variable2, ...] を使用して特定の変数をキャプチャすることができます。ラムダ式はキャプチャされた変数にのみアクセスできますが、元の値を変更することはできません。
C++ ラムダ式のクロージャ
クロージャは、関数のスコープ外に保存され、関数からアクセスできる関連変数のセットです。 C++ では、クロージャはラムダ式を通じて実装され、関数の実行コンテキストで変数をキャプチャします。
構文
C++ ラムダ式の一般的な構文は次のとおりです:
[capture-list] (parameters) -> return-type { function-body }
ここで、capture-list
はキャプチャされる変数を定義し、次の方法で使用できます: capture-list
定义要捕获的变量,可以采用以下方式:
[=]
: 捕获所有局部变量按值[&]
: 捕获所有局部变量按引用[variable1, variable2, ...]
: 按值或引用捕获特定变量实战案例
让我们考虑一个需要访问其外部函数作用域变量的 Lambda 表达式。以下代码段演示了此功能:
#include <iostream> int main() { int value = 10; auto lambda = [value] () { std::cout << value << std::endl; }; lambda(); // 输出 10 return 0; }
在这个例子中,Lambda 表达式捕获 value
变量按值,并可以在其函数体内访问。
注意
mutable
[=]
: すべてのローカル変数を値によってキャプチャします[&]
: すべてのローカル変数を参照によってキャプチャします [variable1, variable2, .. .]
: 値または参照によって特定の変数をキャプチャします 🎜🎜🎜🎜 実践的な例 🎜🎜🎜 外側の関数スコープ変数にアクセスする必要がある Lambda 式を考えてみましょう。次のコード スニペットは、この機能を示しています: 🎜rrreee🎜 この例では、ラムダ式は value
変数を値でキャプチャし、関数本体内でアクセスできます。 🎜🎜🎜注🎜🎜mutable
修飾子を使用します。 🎜🎜以上がC++ラムダ式でクロージャを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。