Kursinhalt
C++ Funktionen
C++ Funktionen
Lambda-Funktionen
Lambda-Funktionen oder anonyme Funktionen sind ein Feature, mit dem du kleine, unbenannte Funktionen direkt in deinem Code erstellen kannst. Sie sind besonders nützlich, wenn du für einen kurzen Zeitraum eine einfache Funktion benötigst und keine separate benannte Funktion definieren möchtest.
Lambda-Funktionen sind aus mehreren Gründen nützlich:
- Kürze: Lambda-Funktionen ermöglichen es, kurzen und prägnanten Code zu schreiben. Sie sind ideal für Operationen, die in wenigen Zeilen ausgedrückt werden können.
- Lokaler Geltungsbereich: Sie können Variablen aus dem umgebenden Scope erfassen, wodurch du Variablen der übergeordneten Funktion innerhalb der Lambda-Funktion verwenden kannst.
- Flexibilität: Lambdas können als Argumente an andere Funktionen übergeben werden, was sie praktisch für Funktionen wie
std::for_each
,std::sort
usw. macht.
Wie erstellt man eine Lambda-Funktion?
Wir können folgende Syntax verwenden, um eine Lambda-Funktion zu erstellen:
Eine Capture-Klausel in einer Lambda-Funktion erlaubt es, anzugeben, welche Variablen aus dem umgebenden Scope (außerhalb der Lambda-Funktion) innerhalb der Lambda-Funktion zugegriffen und verwendet werden können. Es gibt drei gängige Arten von Capture-Klauseln:
- Nichts erfassen
[]
: Die Lambda-Funktion kann auf keine Variablen aus dem umgebenden Scope zugreifen. - Bestimmte Variablen per Wert erfassen
[var1, var2, ...]
: Die Lambda-Funktion kann auf bestimmte Variablen aus dem umgebenden Scope per Wert zugreifen. - Bestimmte Variablen per Referenz erfassen
[&var1, &var2, ...]
: Die Lambda-Funktion kann auf bestimmte Variablen aus dem umgebenden Scope per Referenz zugreifen.
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; }
Die Funktion wird wie folgt konstruiert:
- Die Lambda-Funktion erfasst die Variable
multiplier
per Referenz[&multiplier]
. - Der Rückgabetyp
-> int
gibt an, dass die Lambda-Funktion einen Integer zurückgibt. - Das Lambda wird sofort mit dem Argument
5
aufgerufen, und das Ergebnis wird in der Variableresult
gespeichert.
Danke für Ihr Feedback!