在C++中,lambda函數(shù)可以使用捕獲列表來(lái)捕獲外部變量,并且可以修改這些變量。捕獲列表通過(guò)方括號(hào)([])來(lái)指定,其中包含要捕獲的變量。要在lambda函數(shù)中修改捕獲的變量,需要使用mutable
關(guān)鍵字。
以下是一個(gè)簡(jiǎn)單的示例,演示了如何在C++ lambda函數(shù)中捕獲并修改捕獲的變量:
#include <iostream>
int main() {
int x = 10;
// Lambda function captures x by reference and modifies its value
auto lambda = [&x]() mutable {
x *= 2;
};
lambda(); // Call lambda function
std::cout << "Modified value of x: " << x << std::endl;
return 0;
}
在上面的示例中,lambda函數(shù)通過(guò)引用捕獲了變量x
,并使用mutable
關(guān)鍵字使得變量x
可以在lambda函數(shù)中修改。在lambda函數(shù)中,我們將x
的值乘以2。最后輸出修改后的x
的值。
運(yùn)行上面的代碼將輸出:
Modified value of x: 20
這表明lambda函數(shù)成功地捕獲并修改了變量x
的值。