Maison >développement back-end >C++ >Quelle est la différence entre les expressions C++ Lambda et les fonctions traditionnelles ?

Quelle est la différence entre les expressions C++ Lambda et les fonctions traditionnelles ?

王林
王林original
2024-06-05 12:52:57496parcourir

La différence entre les expressions Lambda C++ et les fonctions traditionnelles Les principales différences entre les expressions Lambda et les fonctions traditionnelles incluent : Anonymat : les expressions Lambda sont anonymes et ne nécessitent pas de nom de fonction. Syntaxe : les expressions Lambda sont exprimées à l'aide de crochets et de parenthèses, et les fonctions traditionnelles utilisent la syntaxe de fonction standard. Listes de capture : les expressions Lambda peuvent accéder aux variables externes à l'aide de listes de capture, alors que les fonctions traditionnelles ne peuvent accéder qu'aux arguments explicitement transmis. Inférence de type : les expressions Lambda prennent en charge l'inférence de type, alors que les fonctions traditionnelles nécessitent un type explicite.

C++ Lambda 表达式与传统函数有什么区别?

La différence entre les expressions Lambda C++ et les fonctions traditionnelles

Introduction

L'expression Lambda est une fonction anonyme puissante introduite en C++, qui a des fonctions similaires aux fonctions traditionnelles, mais a une syntaxe plus simple. Cet article explore les principales différences entre les expressions lambda et les fonctions traditionnelles et fournit des exemples pratiques pour illustrer ces différences.

Anonymat

L'une des principales différences est que les expressions lambda sont anonymes, ce qui signifie qu'elles n'ont pas de nom. En revanche, les fonctions traditionnelles nécessitent qu'un nom soit déclaré avant de pouvoir être appelées.

Syntaxe

Les expressions lambda sont exprimées à l'aide de crochets et de parenthèses, comme indiqué ci-dessous :

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

Les fonctions traditionnelles utilisent la syntaxe suivante :

return-type function-name(parameters) { function-body };

Liste de capture

les expressions lambda peuvent utiliser une liste de capture, qui permet accès aux variables dans les portées externes. Les fonctions traditionnelles ne peuvent pas accéder aux variables externes à moins de leur être transmises explicitement.

Inférence de type

Les expressions lambda prennent en charge l'inférence de type, ce qui signifie que le compilateur peut déduire automatiquement le type de retour et les types de paramètres des lambdas. Les fonctions traditionnelles nécessitent une spécification de type explicite.

Cas professionnel

Exemple 1: Tri des vecteurs

Utilisez l'expression de lambda pour trier les vecteurs entiers dans l'ordre croissant:

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> v = {3, 1, 4, 2};

  std::sort(v.begin(), v.end(), [](int a, int b) { return a < b; });

  for (int num : v) {
    std::cout << num << " ";
  }
  std::cout << std::endl;

  return 0;
}

example 2: Calculer la moyenne

User l'expression de lambda pour calculer la moyenne des nombres de points flottants de la moyenne de la moyenne de la moyenne de la moyenne de la moyenne de la moyenne de un vecteur :

#include <vector>
#include <numeric>

int main() {
  std::vector<float> v = {2.5, 3.1, 4.2, 1.7};

  float avg = std::accumulate(v.begin(), v.end(), 0.0, [](float a, float b) { return a + b; }) / v.size();

  std::cout << "Average: " << avg << std::endl;

  return 0;
}

Conclusion

🎜les expressions lambda présentent à la fois des similitudes et des différences avec les fonctions traditionnelles. Les expressions Lambda sont anonymes, déduites de type et permettent la capture de variables externes, offrant ainsi une manière plus concise et flexible d'écrire des fonctions. Les expressions Lambda constituent un excellent choix pour les scénarios dans lesquels vous devez créer rapidement des fonctions ponctuelles ou gérer des variables externes. 🎜

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

Articles Liés

Voir plus