Maison  >  Article  >  développement back-end  >  Quelles sont les spécifications d’écriture des expressions de fonction lambda en C++ ?

Quelles sont les spécifications d’écriture des expressions de fonction lambda en C++ ?

WBOY
WBOYoriginal
2024-04-11 12:54:01867parcourir

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.

C++ 函数lambda表达式的写法规范是什么?

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 类型

使用规范:

  • Lambda 表达式用于创建临时函数对象。
  • 可将其赋值给变量或函数指针,或直接作为参数传递。
  • Lambda 表达式中可访问捕获的外部变量,但不能修改它们(除非通过引用捕获)。
  • Lambda 表达式中的 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 : type auto 🎜🎜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!

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