lambdas c with examples
Apprenez tout sur l'expression Lambda en C ++ en termes simples.
L'expression Lambda est le concept le plus récent en C ++ qui a été introduit à partir de C ++ 11.
Dans ce didacticiel, nous allons découvrir les lambdas en C ++. Nous discuterons également de la manière dont les lambdas peuvent être définies et utilisées dans le programme.
=> Consultez la série complète de formations C ++ ici.
Ce que vous apprendrez:
convertisseur simple gratuit de youtube en mp3
- Expressions / fonctions Lambda
- Comment utiliser / écrire des lambdas?
- Conclusion
- lecture recommandée
Expressions / fonctions Lambda
Les lambdas, comme on les appelle communément, sont essentiellement de petits extraits de code en ligne qui peuvent être utilisés dans des fonctions ou même des instructions d'appel de fonction. Ils ne sont ni nommés ni réutilisés.
Nous pouvons déclarer les lambdas comme «auto» et les utiliser n'importe où dans le programme.
Comment utiliser / écrire des lambdas?
La syntaxe générale de la définition des lambdas est la suivante:
(Capture clause) (parameter_list) mutable exception ->return_type { Method definition; }
Capture de fermeture : Introducteur Lambda selon la spécification C ++.
Liste des paramètres : Aussi appelé déclarations lambda. Est facultatif et est similaire à la liste de paramètres d'une méthode.
Mutable : Optionnel. Permet de modifier les variables capturées par un appel par valeur.
exception : Spécification d'exception. Optionnel. Utilisez «noexcept» pour indiquer que lambda ne lève pas d'exception.
Return_type : Optionnel. Le compilateur déduit le type de retour de l'expression seul. Mais à mesure que les lambdas deviennent plus complexes, il est préférable d'inclure le type de retour car le compilateur peut ne pas être en mesure de déduire le type de retour.
Définition de la méthode : Corps Lambda.
Une clause de capture de la définition lambda est utilisée pour spécifier quelles variables sont capturées et si elles sont capturées par référence ou par valeur.
Une fermeture de capture vide () indique qu'aucune variable n'est utilisée par lambda, ce qui signifie qu'il ne peut accéder qu'aux variables qui lui sont locales.
Le mode «capture par défaut» indique comment capturer en dehors des variables référencées dans Lambda:
- La fermeture de capture (&) signifie que les variables sont capturées par référence.
- La fermeture de capture (=) indique que les variables sont capturées par valeur.
Si nous avons une clause de capture par défaut et une clause de capture, alors nous ne pouvons pas avoir d'identificateur dans la capture de cette capture particulière peut avoir l'identificateur &. De même, si la clause de capture contient capture-default =, la clause de capture ne peut pas avoir le form = identifier. De plus, un identifiant ou «ceci» ne peut pas apparaître plus d’une fois dans la clause de capture.
Cela devrait être clair à partir des exemples suivants.
(&sum, sum_var) //OK, explicitly specified capture by value (sum_var, &sum) //ok, explicitly specified capture by reference (&, &sum_var) // error, & is the default still sum_var preceded by & (i, i) //error, i is used more than once
Ici, sum, sum_var et I sont les variables à capturer et à utiliser dans lambda.
quel est le modèle de cascade avec exemple
Vous trouverez ci-dessous un exemple de base d'expression Lambda en C ++.
#include #include using namespace std; int main() { auto sum = ()(int a, int b) { return a + b; }; cout <<'Sum of two integers:'<< sum(5, 6) << endl; return 0; }
Production:
Somme de deux entiers: 11
Ici, nous avons une expression lambda en ligne pour calculer la somme de deux valeurs. Nous avons spécifié le type des valeurs a et b sous forme d'entiers.
Un problème avec le code ci-dessus est qu'il ne fonctionne que pour les entiers. Si plus tard dans le programme, nous voulons ajouter deux doubles ou chaînes ou tout autre type, nous devrons avoir ces nombreux lambdas. Ce n'est pas une manière efficace de programmer.
référence indéfinie au c ++ principal
Nous pouvons surmonter ce problème en utilisant des paramètres de modèle. Cela rend les lambdas généralisées pour tous les types de données. Cela se fait à partir de C ++ 14.
Ainsi, le programme ci-dessus sera modifié comme suit:
#include #include using namespace std; int main() { // generalized lambda auto sum = ()(auto a, auto b) { return a + b; }; cout <<'Sum(5,6) = '<< sum(5, 6) << endl; // sum of two integers cout <<'Sum(2.0,6.5) = '< Production:
Somme (5,6) = 11
Somme (2,0,6,5) = 8,5
Sum ((string ('SoftwareTesting'), string ('help.com')) = SoftwareTestinghelp.com
Ainsi dans ce programme, nous avons utilisé une somme lambda générique, qui peut être utilisée pour trouver la somme des deux objets de tout type. Notez que nous avons utilisé le mot-clé 'auto' pour indiquer que le type de données du paramètre sera déduit en fonction des données.
Pour démontrer l'utilisation de ce lambda, nous l'avons utilisé avec trois types de données différents, int, float et string. De la sortie, on sait que selon le type de données, une opération de somme est effectuée. Par exemple, lorsque nous fournissons des paramètres de chaîne à la somme lambda, il concatène les deux chaînes.
Conclusion
Nous sommes arrivés à la fin de ce tutoriel sur les expressions lambda en C ++. Il s'agit du concept le plus récent en C ++ et peut être très utile lorsque nous devons exécuter un petit extrait de code en ligne. Les lambdas peuvent également être rendus génériques et utilisés pour tous les types de données.
Dans notre prochain didacticiel, nous aborderons certains des sujets supplémentaires en C ++ comme l'heure, les entrées / sorties standard et la journalisation.
=> Lisez la série de formations populaires C ++ ici.
lecture recommandée
- Qu'est-ce que le test de comparaison (apprendre avec des exemples)
- Tutoriel Python DateTime avec des exemples
- Commande Cut sous Unix avec des exemples
- Syntaxe des commandes Unix Cat, options avec exemples
- Utilisation du curseur dans MongoDB avec des exemples
- Commande Ls sous Unix avec des exemples
- Fonctions de date et d'heure en C ++ avec des exemples
- Méthode MongoDB Sort () avec exemples