Maison  >  Article  >  développement back-end  >  Comment une expression lambda dans une fonction C++ capture-t-elle des variables externes via le passage de paramètres ?

Comment une expression lambda dans une fonction C++ capture-t-elle des variables externes via le passage de paramètres ?

王林
王林original
2024-04-25 16:15:01963parcourir

Les expressions lambda C++ peuvent capturer des variables externes via le passage de paramètres. Les étapes spécifiques sont les suivantes : Définir une fonction qui accepte une expression lambda comme paramètre. Capturez les variables externes dans les expressions lambda. Passez une expression lambda en tant que paramètre à la fonction. Appelez l'expression lambda dans la fonction pour accéder aux variables externes capturées.

C++ 函数中的 lambda 表达式如何通过参数传递捕获外部变量?

Comment les expressions Lambda dans les fonctions C++ capturent des variables externes avec le passage de paramètres

Les expressions Lambda sont un moyen simple de définir des fonctions anonymes en C++. Ils peuvent capturer des variables externes, les rendant accessibles dans le cadre de la fonction. Lorsque vous devez transmettre une expression lambda en tant que paramètre à une autre fonction, vous pouvez capturer des variables externes via le passage de paramètres.

Les étapes suivantes montrent comment capturer des variables externes par passage de paramètres :

#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;
}

Sortie :

捕获的变量:10

Dans cet exemple :

  • global_var est une variable int externe dont la valeur est initialisée dix. global_var 是一个外部 int 变量,其值初始化为 10。
  • print_captured_var 函数接受一个函数对象 lambda 作为参数,它将调用该函数对象并传递一个捕获的外部变量的值作为实参。
  • lambda 函数是一个 lambda 表达式,它捕获外部变量 global_var。在 lambda 表达式中,外部变量的值被打印到标准输出。
  • main 函数将 lambda 表达式作为参数传递给 print_captured_var 函数,然后调用该函数。
  • print_captured_var
  • La fonction print_captured_var accepte un objet fonction lambda comme paramètre, et elle appellera l'objet fonction et transmettra la valeur d'une variable externe capturée comme paramètre réel.
🎜La fonction lambda est une expression lambda qui capture la variable externe global_var. Dans une expression lambda, la valeur de la variable externe est imprimée sur la sortie standard. 🎜🎜La fonction main transmet l'expression lambda en tant que paramètre à la fonction print_captured_var puis appelle la fonction. La fonction 🎜🎜print_captured_var imprime la valeur de la variable externe capturée dans l'expression lambda, obtenant la sortie "Variable capturée : 10". 🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn