La fonction Lambda est un objet fonction anonyme qui peut définir rapidement un objet fonction à l'intérieur de la fonction. La fonction Lambda de C++ a été introduite dans la norme C++11, ce qui peut grandement simplifier l'écriture de code et améliorer la lisibilité et la maintenabilité du programme.
La syntaxe de la fonction Lambda est la suivante :
[capture list] (parameter list) -> return type { function body }
Parmi eux, la liste de capture est la liste de capture de la fonction Lambda, utilisée pour capturer les variables externes ; le type de retour, utilisé pour spécifier la valeur de retour. Le corps de la fonction est le corps de la fonction, utilisé pour implémenter les opérations de fonction.
Ce qui suit est un exemple de fonction Lambda simple :
auto add = [](int a, int b) -> int { return a + b; };
Dans l'exemple ci-dessus, la fonction Lambda utilise le mot-clé auto pour définir une variable add pour stocker la valeur de retour de la fonction Lambda. La fonction Lambda reçoit deux paramètres a et b et renvoie leur somme. -> int spécifie que la fonction Lambda renvoie un type entier.
Les fonctions Lambda sont généralement utilisées là où des objets de fonction doivent être transmis, tels que des fonctions d'algorithme, des conteneurs STL, etc. Voici quelques scénarios d'application des fonctions Lambda.
La fonction d'algorithme de la bibliothèque standard C++ accepte généralement un objet fonction comme paramètre pour opérer sur les éléments du conteneur. Les fonctions Lambda peuvent définir rapidement des objets de fonction temporaires dans les fonctions d'algorithme.
Par exemple, le code suivant utilise la fonction Lambda pour implémenter la fonction d'algorithme std::for_each pour parcourir le conteneur :
std::vector<int> vec = {1, 2, 3, 4, 5}; std::for_each(vec.begin(), vec.end(), [](int value) { std::cout << value << " "; });
Parmi eux, la fonction Lambda est utilisée pour afficher chaque élément du conteneur.
Les éléments d'un conteneur STL sont généralement de type objet, et les éléments peuvent être triés, recherchés, etc. via la fonction Lambda.
Par exemple, le code suivant utilise la fonction Lambda pour trier un conteneur vectoriel :
std::vector<int> vec = {3,1,2,5,4}; std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; });
Parmi eux, la fonction Lambda est utilisée pour spécifier la comparaison de la relation de taille de deux éléments afin de déterminer leur position relative dans le conteneur.
Dans la programmation multithread, les fonctions Lambda peuvent être utilisées pour définir des fonctions de thread et implémenter la logique de fonctionnement des threads.
Par exemple, le code suivant utilise la fonction Lambda pour créer un nouveau thread :
std::thread t([]() { std::cout << "New thread" << std::endl; }); t.join();
Parmi eux, la fonction Lambda est utilisée pour définir la logique d'exécution du nouveau thread.
Dans la programmation GUI, les fonctions Lambda peuvent être utilisées pour capturer des objets de contrôle et implémenter des fonctions de réponse aux événements.
Par exemple, le code suivant utilise la fonction Lambda pour répondre à l'événement clic sur le bouton :
QPushButton *button = new QPushButton("Click me"); connect(button, &QPushButton::clicked, [=] { std::cout << "Button clicked" << std::endl; });
Parmi eux, la fonction Lambda est utilisée pour répondre à l'événement clic sur le bouton pour effectuer les opérations associées.
En général, la fonction Lambda est une syntaxe de programmation très pratique qui peut simplifier l'écriture de code et améliorer la lisibilité et la maintenabilité du programme. Il est largement utilisé dans les fonctions algorithmiques, les conteneurs STL, la programmation multithread et la programmation GUI.
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!