Il existe trois façons de capturer des expressions lambda de variables externes en C++ : Capture par valeur : créez une copie de la variable. Capture par référence : obtenez une référence de variable. Capture par valeur et référence simultanément : permet de capturer plusieurs variables, soit par valeur, soit par référence.
L'expression lambda est un outil puissant en C++ qui nous permet de définir des fonctions anonymes au sein de fonctions. Parfois, nous devons accéder à des variables externes dans les expressions lambda. Ce didacticiel couvrira différentes manières de capturer des variables externes.
En utilisant la syntaxe [var]
, nous pouvons capturer la variable var
par valeur. Cela signifie que l'expression lambda créera une copie de la variable. [var]
语法,我们可以按值捕获变量 var
。这意味着 lambda 表达式将创建该变量的副本。
auto var = 10; auto lambda = [var] { // 这里可以使用 var return var; };
使用 [&var]
语法,我们可以按引用捕获变量 var
。这意味着 lambda 表达式将获得对变量的引用。
auto var = 10; auto lambda = [&var] { // 这里可以使用 var 并修改它 var++; return var; };
我们可以按值和引用同时捕获多个变量。例如,以下 lambda 表达式按值捕获 val
,按引用捕获 ref
auto func = [](int val, int& ref) { // val 是按值捕获的,ref 是按引用捕获的 };
[&var]
, nous pouvons capturer la variable var
par référence. Cela signifie que l'expression lambda obtiendra une référence à la variable. #include <iostream> #include <vector> using namespace std; int main() { // 按值捕获 int num = 10; auto lambda1 = [num] { return num++; }; cout << lambda1() << endl; // 输出 10 // 按引用捕获 vector<int> myVector{1, 2, 3}; auto lambda2 = [&myVector] { myVector.push_back(4); }; lambda2(); for (auto& elem : myVector) { cout << elem << " "; // 输出 1 2 3 4 } cout << endl; return 0; }
val
par valeur et ref
par référence : 🎜rrreee🎜Un exemple pratique🎜🎜L'exemple suivant montre comment utiliser la capture externe par valeur et par référence Variable: 🎜rrreeeCe 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!