Heim >Backend-Entwicklung >C++ >Die Bedeutung der Lambda-Funktion in C/C++
Lambda-Funktion – Eine Lambda-Funktion ist eine Inline-Funktion, die keine Implementierung außerhalb des Rahmens des Hauptprogramms erfordert.
Die Lambda-Funktion kann auch als Wert einer zu speichernden Variablen verwendet werden. Lambdas können Objekte (sogenannte Funktoren) genannt werden, die von Funktionen aufgerufen werden können.
Immer wenn der Compiler auf die Definition einer Lambda-Funktion stößt, erstellt er normalerweise ein benutzerdefiniertes Lambda-Objekt.
Lambda-Funktion verfügt über mehr Funktionen als eine normale Funktion, zum Beispiel verfügt sie über eine Erfassungsmethode zum Erfassen der verwendeten Variablen. Erfasste Variablen werden jedoch als Mitglieder des Objekts behandelt.
Manchmal wird eine Lambda-Funktion auch als „Funktionsobjekt“ bezeichnet, sie hat ihren eigenen Gültigkeitsbereich und kann als Parameter innerhalb einer normalen Funktion übergeben werden. Funktion. Lambda-Funktionen haben ihren eigenen Lebenszyklus.
[ ] – Capture
( ) – Parameter (optional)
→ – Rückgabewert (optional)
{...} – Funktionskörper.
[ ]( int a) -> int { return a-1 ;};
Capture – Capture ist eine Klausel, über die eine Lambda-Funktion auf Variablen zugreifen kann, die in einem bestimmten Bereich oder verschachtelten Block verfügbar sind.
Wir können einen bestimmten Wert erfassen, indem wir zwei Methoden verwenden, um die verfügbaren Variablen abzurufen:
Ein Objekt nach Namen erfassen – Durch das Erfassen eines Objekts nach Namen wird mithilfe einer Lambda-Funktion eine lokale Kopie des Objekts generiert.
Wir können dieses Konzept anhand des folgenden Beispiels verstehen:
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; } }
Im obigen Beispiel wird der Wert erfasst, indem eine lokale Kopie der Lambda-Funktion erstellt wird.
Erfassen von Objekten per Referenz – Durch das Erfassen von Objekten per Referenz können Sie den Kontext einer Lambda-Funktion manipulieren. Daher kann sich der von einem Funktionsobjekt oder einer Lambda-Funktion erfasste Wert ändern.
Wir können dies anhand des folgenden Beispiels verstehen:
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; }
Wir wissen, dass die Lambda-Funktion als Parameter in jeder normalen Funktion verwendet werden kann. Zum Beispiel
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; };
Das obige ist der detaillierte Inhalt vonDie Bedeutung der Lambda-Funktion in C/C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!