Maison > Article > développement back-end > Quelles sont les spécifications d'écriture des expressions de fonction lambda en C++ ?
La syntaxe standard pour écrire des expressions Lambda de fonction C++ est : [capture](parameters) -> return_type { // Function body}, où capture est la capture des variables externes, settings est les paramètres de la fonction et return_type est le retour de la fonction. type de valeur. Ses types sont divisés en fonction de la liste de capture et de la liste des paramètres : capture de toutes les variables externes, aucun paramètre : type automatique ; capture de variables externes spécifiques, aucun paramètre : type automatique (peut être réduit aucune capture), paramètres : type de fonction. Les expressions Lambda sont utilisées pour créer des objets de fonction temporaires, qui peuvent être attribués à des variables ou à des pointeurs de fonction, ou transmis directement en tant qu'arguments.
Spécification d'écriture d'expression Lambda de fonction C++
Syntaxe :
[capture](parameters) -> return_type { // 函数体 }
Parmi elles :
capture
: capture des variables externes, facultative, la valeur par défaut est [& ]
(capture toutes les variables externes) capture
:捕获外部变量,可选,默认为 [&]
(捕获所有外部变量)parameters
:函数参数,可选return_type
:函数返回值类型,可选Lambda 表达式类型:
Lambda 表达式属于匿名函数类型。其类型取决于捕获列表和参数列表:
auto
类型auto
类型(可缩小)functioneff33ae303261d79115a65b552404e91
类型使用规范:
this
parameters
: paramètres de fonction, facultatifs return_type
: type de valeur de retour de fonction, facultatif
Type d'expression Lambda :
L'expression Lambda est un type de fonction anonyme. Son type dépend de la liste de capture et de la liste des paramètres : 🎜🎜🎜Capturez toutes les variables externes, aucun paramètre : typeauto
🎜🎜Capturez des variables externes spécifiques, aucun paramètre : type auto
(Peut être réduit) 🎜🎜 Pas de capture, avec paramètres : functioneff33ae303261d79115a65b552404e91
Type 🎜🎜🎜🎜Spécification d'utilisation : 🎜🎜🎜🎜L'expression Lambda est utilisée pour créer un objet fonction temporaire . 🎜🎜Il peut être affecté à une variable ou à un pointeur de fonction, ou passé directement en paramètre. 🎜🎜Les variables externes capturées sont accessibles dans une expression Lambda, mais elles ne peuvent pas être modifiées (sauf si elles sont capturées par référence). 🎜🎜Le pointeur this
dans les expressions Lambda pointe vers le contexte dans lequel elles ont été créées. 🎜🎜🎜🎜Cas réel : 🎜🎜// 捕获所有外部变量,无参数 auto lambda1 = []() { // 可以访问外部变量 std::cout << "Lambda 1: " << x << std::endl; }; // 捕获特定外部变量,无参数 int x = 10; auto lambda2 = [x]() { // 只可以访问捕获的外部变量 x std::cout << "Lambda 2: " << x << std::endl; }; // 无捕获,有参数 auto lambda3 = [](int y) { // 没有捕获外部变量,y 为函数参数 std::cout << "Lambda 3: " << y << std::endl; }; int main() { lambda1(); lambda2(); lambda3(20); return 0; }🎜🎜Sortie : 🎜🎜
Lambda 1: 10 Lambda 2: 10 Lambda 3: 20
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!