Maison >développement back-end >C++ >Quelle est la différence entre les expressions C++ Lambda et les fonctions traditionnelles ?
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.
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;
}
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!