Maison > développement back-end > C++ > le corps du texte

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

WBOY
Libérer: 2023-09-02 19:33:08
avant
1428 Les gens l'ont consulté

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 ;};
Copier après la connexion

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;
   }
}
Copier après la connexion

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;
}
Copier après la connexion

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;
};
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal