在C++中,lambda函數可以通過捕獲列表來捕獲外部變量。有兩種捕獲方式:值捕獲和引用捕獲。
int x = 10;
auto lambda = [x](){
std::cout << x << std::endl;
};
x = 20;
lambda(); // 輸出10
int x = 10;
auto lambda = [&x](){
std::cout << x << std::endl;
};
x = 20;
lambda(); // 輸出20
因此,值捕獲會在lambda函數內部創建一個變量的拷貝,而引用捕獲會直接引用外部變量。選擇捕獲方式取決于具體需求,需要注意避免引用捕獲時外部變量被銷毀導致懸空指針的問題。