Contenu du cours
Fonctions C++
Fonctions C++
Fonctions Lambda
Les fonctions lambda, ou fonctions anonymes, sont une fonctionnalité qui vous permet de créer de petites fonctions non nommées directement dans votre code. Elles sont particulièrement utiles lorsque vous avez besoin d'une fonction simple pour une courte période et que vous ne souhaitez pas définir une fonction nommée séparée.
Les fonctions lambda sont utiles pour plusieurs raisons :
- Concision : Les fonctions lambda vous permettent d'écrire du code court et concis. Elles sont idéales pour des opérations pouvant être exprimées en quelques lignes.
- Portée Locale : Elles peuvent capturer des variables de l'environnement, ce qui vous permet d'utiliser des variables de la fonction parente à l'intérieur de la lambda.
- Flexibilité : Les lambda peuvent être passées en tant qu'arguments à d'autres fonctions, ce qui les rend pratiques pour des fonctions comme
std::for_each
,std::sort
, etc.
Comment créer une fonction lambda ?
Nous pouvons utiliser la syntaxe suivante pour créer une fonction lambda :
Une clause de capture dans une fonction lambda vous permet de spécifier quelles variables de l'environnement (en dehors de la fonction lambda) peuvent être accessibles et utilisées à l'intérieur de la fonction lambda. Il existe 3 types de clauses de capture couramment utilisés :
- Capture de rien
[]
: La fonction lambda ne peut accéder à aucune variable de l'environnement. - Capture de variables spécifiques par valeur
[var1, var2, ...]
: La fonction lambda peut accéder à des variables spécifiques de l'environnement par valeur. - Capture de variables spécifiques par référence
[&var1, &var2, ...]
: La fonction lambda peut accéder à des variables spécifiques de l'environnement par référence.
main
#include <iostream> int main() { int multiplier = 2; // Lambda function capturing 'multiplier' by reference and with explicit return type (int) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << "Result: " << result << std::endl; }
La fonction est construite comme suit :
- La fonction lambda capture la variable
multiplier
par référence[&multiplier]
. - Le type de retour
-> int
spécifie que la fonction lambda retourne un entier. - La lambda est immédiatement invoquée avec l'argument
5
, et le résultat est stocké dans la variableresult
.
Merci pour vos commentaires !