C++ lambda如何捕獲并修改捕獲變量

c++
小樊
123
2024-07-05 19:04:22

在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的值。

0