在C++中使用lambda表達式時,可以通過捕獲列表來捕獲變量。捕獲列表可以通過值捕獲、引用捕獲或隱式捕獲來捕獲變量。
以下是一些示例,展示了如何在C++中正確使用lambda捕獲變量:
int x = 10;
auto lambda = [x]() {
std::cout << x << std::endl;
};
lambda(); // 輸出:10
int y = 20;
auto lambda = [&y]() {
y++;
std::cout << y << std::endl;
};
lambda(); // 輸出:21
int z = 30;
auto lambda = [&](){
z++;
std::cout << z << std::endl;
};
lambda(); // 輸出:31
在捕獲列表中,可以同時使用值捕獲和引用捕獲,例如:
int a = 1;
int b = 2;
auto lambda = [a, &b]() {
a++;
b++;
std::cout << "a: " << a << ", b: " << b << std::endl;
};
lambda(); // 輸出:a: 2, b: 3
需要注意的是,當通過引用捕獲變量時,需要確保在lambda表達式執行完畢后,被捕獲的變量仍然有效。