Lambdas avec paramètres
Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 43 sur 56.
Maintenant que vous comprenez la syntaxe de base des lambdas, rendons les lambdas plus utiles en ajoutant des paramètres. Tout comme les fonctions régulières, les lambdas peuvent accepter des valeurs d'entrée avec lesquelles travailler.
Pour ajouter des paramètres à une lambda, placez-les à l'intérieur des parenthèses après la clause de capture :
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Affiche : Sum: 8La syntaxe des paramètres fonctionne exactement comme les paramètres de fonction réguliers - vous spécifiez le type suivi du nom du paramètre. Vous pouvez avoir plusieurs paramètres séparés par des virgules, tout comme illustré ci-dessus.
Vous pouvez également appeler une lambda avec des paramètres immédiatement sans la stocker :
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Affiche : Product: 28Cette capacité à accepter des paramètres rend les lambdas beaucoup plus flexibles et réutilisables, vous permettant de créer de petites fonctions qui peuvent traiter différentes valeurs d'entrée à chaque fois qu'elles sont appelées.
Défi
FacileCréez un programme qui illustre les expressions lambda avec paramètres en construisant une calculatrice simple qui effectue différentes opérations mathématiques. Ce défi testera votre compréhension de la manière de définir des expressions lambda qui acceptent des valeurs d'entrée et travaillent avec elles.
Les entrées suivantes seront fournies :
- Deux entiers
num1etnum2représentant les nombres pour les calculs - Un caractère
operationreprésentant l'opération mathématique à effectuer
Votre programme doit :
- Créer une expression lambda nommée
addqui prend deux paramètres entiers et affiche leur somme au formatSum: [result] - Créer une expression lambda nommée
subtractqui prend deux paramètres entiers et affiche leur différence au formatDifference: [result] - Créer une expression lambda nommée
multiplyqui prend deux paramètres entiers et affiche leur produit au formatProduct: [result] - Lire les deux nombres et le caractère d'opération à partir de l'entrée
- En fonction du caractère d'opération, appeler la lambda appropriée avec les deux nombres
Le caractère d'opération sera l'un des suivants :
+pour l'addition (appeler la lambdaadd)-pour la soustraction (appeler la lambdasubtract)*pour la multiplication (appeler la lambdamultiply)
Utilisez le format de sortie exact suivant selon l'opération :
Pour l'addition :
Sum: [result]Pour la soustraction :
Difference: [result]Pour la multiplication :
Product: [result]N'oubliez pas que les paramètres lambda sont définis à l'intérieur des parenthèses après la clause de capture, en utilisant la même syntaxe que les paramètres de fonction classiques. Stockez chaque lambda dans une variable à l'aide du mot-clé auto, puis appelez la lambda appropriée en fonction du caractère d'opération d'entrée à l'aide d'une instruction if-else ou d'une instruction switch.
Aide-mémoire
Les expressions lambda peuvent accepter des paramètres en les plaçant entre parenthèses après la clause de capture :
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Affiche : Sum: 8La syntaxe des paramètres fonctionne exactement comme celle des paramètres de fonction classiques - spécifiez le type suivi du nom du paramètre. Les paramètres multiples sont séparés par des virgules.
Vous pouvez également appeler une lambda avec des paramètres immédiatement sans la stocker :
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Affiche : Product: 28Essayez vous-même
#include <iostream>
using namespace std;
int main() {
// Lire l'entrée
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Créer des expressions lambda pour les opérations d'addition, de soustraction et de multiplication
// TODO: Utiliser une instruction if-else ou switch pour appeler la lambda appropriée en fonction de l'opération
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âche