在 C 中捕捉外部變數的 lambda 表達式有三種方法:按值擷取:建立變數副本。按引用擷取:獲得變數引用。同時按值和引用捕獲:允許捕獲多個變量,按值或按引用。
lambda 表達式是 C 中強大的工具,它允許我們在函數中定義匿名函數。有時,我們需要在 lambda 表達式中存取外部變數。本教程將介紹捕獲外部變數的幾種不同方法。
使用 [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 是按引用捕获的 };
以下範例展示如何使用按值和按引用捕獲外部變數:
#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++ lambda 表達式如何捕捉外部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!