Maison  >  Article  >  développement back-end  >  Quelles sont les règles de syntaxe des expressions lambda C++ ?

Quelles sont les règles de syntaxe des expressions lambda C++ ?

WBOY
WBOYoriginal
2024-06-01 17:33:00983parcourir

L'expression Lambda est une fonction anonyme avec la syntaxe suivante : [capture list] (liste de paramètres) -> type de retour {function body} La liste de capture spécifie les variables à capturer à partir de l'environnement, la liste de paramètres spécifie la liste de paramètres , et le type de retour spécifie le type de retour, le corps de la fonction définit le corps de la fonction. Les variables de capture sont capturées par référence et le type peut être déduit de la liste de capture, de la liste des paramètres et du type de retour.

C++ Lambda 表达式的语法规则是什么?

Règles de syntaxe pour les expressions Lambda C++

Une expression Lambda est une fonction anonyme qui vous permet de créer un objet appelable sans définir de fonction explicite. La syntaxe est la suivante :

[capture list] (parameter list) -> return type { function body }

Où :

  • capture list : Spécifie une liste de variables à capturer à partir de l'environnement environnant.
  • parameter list : Spécifiez la liste de paramètres de l'expression lambda.
  • return type : Spécifiez le type de retour de l'expression lambda. Peut être omis, auquel cas l'expression lambda renvoie void.
  • function body : Définissez le corps de fonction de l'expression lambda.

Voici quelques exemples :

// Capture 变量 x 并返回 x 的平方
auto square = [](int x) { return x * x; };

// 捕获变量 y 并返回 y 的立方
auto cube = [&](int y) { return y * y * y; };

Remarque :

  • Les expressions Lambda peuvent être utilisées en C++11 et supérieur.
  • Les variables capturées dans les expressions Lambda sont capturées par référence, sauf si la valeur capturée est explicitement spécifiée.
  • Le type d'une expression Lambda peut être déduit en fonction de la liste de capture, de la liste des paramètres et du type de retour.

Cas pratique

Ce qui suit est un exemple simple utilisant l'expression lambda :

#include <iostream>
#include <vector>

using namespace std;

int main() {
  // 使用 lambda 表达式对向量中的每个元素平方
  vector<int> numbers = {1, 2, 3, 4, 5};
  for_each(numbers.begin(), numbers.end(), [](int& num) { num *= num; });

  // 使用 lambda 表达式对向量进行排序
  sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; });

  // 打印排序后的向量
  for (int num : numbers) {
    cout << num << " ";
  }
  cout << endl;

  return 0;
}

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