Maison >développement back-end >C++ >La signification de la fonction Lambda en C/C++

La signification de la fonction Lambda en C/C++

WBOY
WBOYavant
2023-09-02 19:33:081474parcourir

La signification de la fonction Lambda en C/C++

Fonction Lambda - Une fonction Lambda est une fonction en ligne qui ne nécessite aucune implémentation en dehors de la portée du programme principal.

La fonction Lambda peut également être utilisée comme valeur d'une variable à stocker. Les lambdas peuvent être appelés objets (appelés foncteurs) qui peuvent être appelés par des fonctions.

Chaque fois que le compilateur rencontre la définition d'une fonction lambda, il crée généralement un objet lambda personnalisé.

La fonction lambda a plus de fonctionnalités qu'une fonction normale, par exemple, elle dispose d'une méthode de capture pour capturer les variables utilisées. Toutefois, les variables capturées sont traitées comme des membres de l'objet.

Parfois, une fonction lambda est également appelée « objet fonction », elle a sa propre portée et peut être passée en paramètre dans une fonction normale. Fonction. Les fonctions Lambda ont leur propre cycle de vie.

[ ] - Capture

( ) - Paramètres (facultatif)

- Valeur de retour (facultatif)

{...} - Corps de la fonction.

Syntaxe lambda

[ ]( int a) -> int { return a-1 ;};

Capture – Capture est une clause par laquelle une fonction lambda peut accéder aux variables disponibles dans une portée spécifique ou un bloc imbriqué.

Nous pouvons capturer une certaine valeur en utilisant deux méthodes pour obtenir les variables disponibles :

  • Capturer un objet par son nom – Capturer un objet par son nom génère une copie locale de l'objet à l'aide d'une fonction lambda.

Nous pouvons comprendre ce concept avec l'exemple suivant -

int main(){
   set s;
   //Adding the elements to set
   int i=20;
   for_each(s.begin(),s.end(), [i](T& elem){
      cout<<elem.getVal()*i<<endl;
   }
}

Dans l'exemple ci-dessus, la valeur est capturée en créant une copie locale de la fonction lambda.

  • Capturer des objets par référence – Capturer des objets par référence vous permet de manipuler le contexte d'une fonction lambda. Par conséquent, la valeur capturée par un objet fonction ou une fonction lambda peut changer.

Nous pouvons comprendre cela avec l'exemple suivant -

int main(){
   sets;
   //Adding elements to the set
   int result=0;
   for_each(s.begin(),s.end(), [&result](&T elem){ result+= elem.getVal();});
   cout<<result<<endl;
}

Lambda à l'intérieur de la fonction membre

Nous savons que la fonction lambda peut être utilisée comme paramètre dans n'importe quelle fonction normale. Par exemple,

class func{
public:
   func(set<T>s): s1(s){}
   void func(){
      remove_if(s1.begin(),s1.end(), [this](int i) ->bool {return (i<level);});
   }
private:
   set<T>s1;
   int result;
};

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer