Introduction aux expressions Lambda
Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 42 sur 56.
Les expressions Lambda sont une fonctionnalité puissante de C++ qui vous permet de créer de petites fonctions anonymes exactement là où vous en avez besoin. Considérez-les comme des mini-fonctions que vous pouvez définir et utiliser sans avoir à écrire une déclaration de function distincte.
La syntaxe de base d’une expression lambda suit ce modèle : [](){}. Les crochets [] sont appelés la clause de capture, les parenthèses () contiennent les paramètres (comme les function ordinaires) et les accolades {} contiennent le corps de la function.
La clause de capture contrôle quelles variable de la portée environnante la lambda peut utiliser. Les formes les plus courantes sont :
[=] — capturer toutes les variable locales par valeur (la lambda obtient sa propre copy)[&] — capturer toutes les variable locales par référence (la lambda accède aux originales)[] — ne rien capturer (la lambda ne peut utiliser aucune variable externe)Voici comment créer et appeler une lambda simple :
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // Appeler la fonction lambdaVous pouvez également définir et exécuter une lambda immédiatement sans la stocker dans une variable :
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Les expressions lambda sont particulièrement utiles pour les fonctions courtes et ponctuelles que vous ne souhaitez pas définir séparément. Elles rendent votre code plus concis et maintiennent la logique associée regroupée.
Défi
FacileCreatez un programme qui présente la syntaxe de base et l’exécution des expressions lambda. Ce défi testera votre compréhension de la manière de définir et d’appeler de simples fonctions lambda without paramètres.
Votre programme doit :
- Createz une expression lambda that prints
Hello from Lambda! - Stockez cette lambda dans une variable using le mot-clé
auto - Appelez la fonction lambda pour l’exécuter
- Createz une deuxième expression lambda that prints
Lambda executed successfully! - Exécutez cette deuxième lambda immediately without la stocker dans une variable
Utilisez le format de sortie exact suivant :
Hello from Lambda!
Lambda executed successfully!N’oubliez pas que les expressions lambda utilisent la syntaxe [](){}, où les crochets [] constituent la clause de capture, les parenthèses () contiennent les paramètres (vides pour ce défi) et les accolades {} contiennent le corps de la fonction. Vous pouvez stocker une lambda dans une variable using auto variableName = [](){...};, puis l’appeler avec variableName();. Pour une exécution immédiate, vous pouvez utiliser la syntaxe [](){...}();, qui définit et appelle la lambda dans une seule instruction.
Essayez vous-même
#include <iostream>
using namespace std;
int main() {
// TODO: Écrivez votre code ci-dessous
// Create a lambda expression that prints "Hello from Lambda!"
// Stockez-la dans une variable en utilisant le mot-clé auto
// Appelez la fonction lambda
// Create a second lambda that prints "Lambda executed successfully!"
// Exécutez-la immédiatement sans la stocker dans une variable
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Pointeurs et mémoire
Qu'est-ce qu'un pointeur ?Opérateur d'adresseOpérateur de déréférencementPointeurs nulsPointeurs et tableauxMémoire dynamique avec 'new'Libérer la mémoire avec 'delete'Récapitulatif - Pratique des pointeurs4Maps (Paires Clé-Valeur)
Introduction à std::mapCréer une MapAccéder aux valeurs et les modifierVérifier l'existence de clésSupprimer des pairesParcourir une MapRécapitulatif - Fréquence des mots7Fonctions avancées
Passage par référenceIntroduction aux expressions LambdaLambdas avec paramètresLambdas avec valeurs de retourIntroduction à la récursivitéFactorielle récursiveTri par Lambda2Vecteurs (Tableaux dynamiques)
Introduction à std::vectorCréer un vecteurAjouter des élémentsAccéder aux élémentsTaille d'un vecteurItérer avec une boucle ForBoucle For basée sur l'intervalleSupprimer des élémentsRécapitulatif - Opérations sur les vecteurs3Projet : Outil de liste de tâches
Présentation du projetAjouter une tâcheEntraînez-vous par vous-même : Compilateur C++ en ligne