C で外部変数のラムダ式をキャプチャするには 3 つの方法があります。 値によるキャプチャ: 変数のコピーを作成します。参照によるキャプチャ: 変数参照を取得します。値と参照による同時キャプチャ: 値または参照による複数の変数のキャプチャを許可します。
ラムダ式は、関数内に匿名関数を定義できる C の強力なツールです。場合によっては、ラムダ式で外部変数にアクセスする必要があります。このチュートリアルでは、外部変数をキャプチャするいくつかの異なる方法について説明します。
[var]
構文を使用すると、変数 var
を値でキャプチャできます。これは、ラムダ式が変数のコピーを作成することを意味します。
auto var = 10; auto lambda = [var] { // 这里可以使用 var return var; };
[&var]
構文を使用すると、変数 var
を参照によってキャプチャできます。これは、ラムダ式が変数への参照を取得することを意味します。
auto var = 10; auto lambda = [&var] { // 这里可以使用 var 并修改它 var++; return var; };
複数の変数を値と参照によって同時にキャプチャできます。たとえば、次のラムダ式は、値によって val
をキャプチャし、参照によって ref
をキャプチャします。
auto func = [](int val, int& ref) { // val 是按值捕获的,ref 是按引用捕获的 };
次の例は、使用方法を示しています。値および参照による外部変数のキャプチャ:
#include <iostream> #include <vector> using namespace std; int main() { // 按值捕获 int num = 10; auto lambda1 = [num] { return num++; }; cout << lambda1() << endl; // 输出 10 // 按引用捕获 vector<int> myVector{1, 2, 3}; auto lambda2 = [&myVector] { myVector.push_back(4); }; lambda2(); for (auto& elem : myVector) { cout << elem << " "; // 输出 1 2 3 4 } cout << endl; return 0; }
以上がC++ ラムダ式はどのようにして外部変数をキャプチャするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。