C++에서 외부 변수의 람다 식을 캡처하는 방법에는 세 가지가 있습니다. 값으로 캡처: 변수의 복사본을 만듭니다. 참조로 캡처: 변수 참조를 가져옵니다. 값 및 참조로 동시에 캡처: 값 또는 참조로 여러 변수를 캡처할 수 있습니다.
람다 식은 함수 내에 익명 함수를 정의할 수 있는 C++의 강력한 도구입니다. 때로는 람다 식에서 외부 변수에 액세스해야 하는 경우도 있습니다. 이 튜토리얼에서는 외부 변수를 캡처하는 몇 가지 다른 방법을 다룹니다.
[var]
구문을 사용하면 변수 var
를 값으로 캡처할 수 있습니다. 이는 람다 식이 변수의 복사본을 생성한다는 의미입니다. [var]
语法,我们可以按值捕获变量 var
。这意味着 lambda 表达式将创建该变量的副本。
auto var = 10; auto lambda = [var] { // 这里可以使用 var return var; };
使用 [&var]
语法,我们可以按引用捕获变量 var
。这意味着 lambda 表达式将获得对变量的引用。
auto var = 10; auto lambda = [&var] { // 这里可以使用 var 并修改它 var++; return var; };
我们可以按值和引用同时捕获多个变量。例如,以下 lambda 表达式按值捕获 val
,按引用捕获 ref
auto func = [](int val, int& ref) { // val 是按值捕获的,ref 是按引用捕获的 };방법 2: 참조로 캡처
[&var]
구문을 사용하면 참조로 변수 var
를 캡처할 수 있습니다. 이는 람다 표현식이 변수에 대한 참조를 얻음을 의미합니다. #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; }방법 3: 값과 참조로 캡처🎜🎜값과 참조로 여러 변수를 동시에 캡처할 수 있습니다. 예를 들어 다음 람다 식은 값으로
val
을 캡처하고 참조로 ref
를 캡처합니다. 🎜rrreee🎜실제 예🎜🎜다음 예에서는 값으로 외부 캡처를 사용하고 참조로 ref
를 캡처합니다. 참조 변수: 🎜rrreee위 내용은 C++ 람다 표현식은 외부 변수를 어떻게 캡처합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!