Home >Backend Development >C++ >How does a lambda expression in a C++ function capture external variables via parameter passing?
C Lambda expressions can capture external variables through parameter passing. The specific steps are as follows: Define a function that accepts a lambda expression as a parameter. Capture external variables in lambda expressions. Pass a lambda expression as a parameter to the function. Call the lambda expression in the function to access the captured external variables.
How Lambda expressions in C functions capture external variables through parameter passing
Lambda expressions are a type of expression in C A convenient way to define anonymous functions. They can capture external variables, making them accessible within function scope. When you need to pass a lambda expression as a parameter to another function, you can capture external variables through parameter passing.
The following steps show how to capture external variables via parameter passing:
#include <iostream> using namespace std; // 外部变量 int global_var = 10; // 接受 lambda 表达式作为参数的函数 void print_captured_var(function<void(int)> lambda) { // 在 lambda 表达式中访问捕获的外部变量 lambda(global_var); } int main() { // 定义 lambda 表达式,捕获外部变量 global_var auto lambda = [](int x) { cout << "捕获的变量:" << x << endl; }; // 将 lambda 表达式作为参数传递给 print_captured_var 函数 print_captured_var(lambda); return 0; }
Output:
捕获的变量:10
In this example:
global_var
is an external int variable whose value is initialized to 10. print_captured_var
The function accepts a function object lambda
as a parameter. It will call the function object and pass the value of a captured external variable as an actual parameter. lambda
A function is a lambda expression that captures the external variable global_var
. In a lambda expression, the value of the external variable is printed to standard output. The main
function passes the lambda expression as a parameter to the print_captured_var
function and then calls the function. print_captured_var
The function prints the value of the captured external variable in the lambda expression, getting the output "Captured variable: 10". The above is the detailed content of How does a lambda expression in a C++ function capture external variables via parameter passing?. For more information, please follow other related articles on the PHP Chinese website!