Lambda-Funktionen
Swipe um das Menü anzuzeigen
Lambda-Funktionen, oder anonyme Funktionen, sind ein Feature, das es ermöglicht, kleine, unbenannte Funktionen direkt im Code zu erstellen. Sie sind besonders nützlich, wenn eine einfache Funktion für einen kurzen Zeitraum benötigt wird und keine separate benannte Funktion definiert werden soll.
Lambda-Funktionen sind aus mehreren Gründen nützlich:
Lambda-Funktionen ermöglichen das Schreiben von kurzem und prägnantem Code. Sie sind ideal für Operationen, die sich in wenigen Zeilen ausdrücken lassen.
Sie können Variablen aus dem umgebenden Gültigkeitsbereich erfassen, sodass Variablen aus der übergeordneten Funktion innerhalb der Lambda verwendet werden können.
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?
Mit der folgenden Syntax kann eine Lambda-Funktion erstellt werden.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
Eine Capture-Klausel in einer Lambda-Funktion ermöglicht es, festzulegen, welche Variablen aus dem umgebenden Gültigkeitsbereich (außerhalb der Lambda-Funktion) innerhalb der Lambda-Funktion 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 Gültigkeitsbereich zugreifen; -
Spezifische Variablen per Wert erfassen
[var1, var2, ...]: Die Lambda-Funktion kann auf bestimmte Variablen aus dem umgebenden Gültigkeitsbereich per Wert zugreifen; -
Spezifische Variablen per Referenz erfassen
[&var1, &var2, ...]: Die Lambda-Funktion kann auf bestimmte Variablen aus dem umgebenden Gültigkeitsbereich per Referenz zugreifen.
main.cpp
1234567891011121314#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // 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 << std::endl; }
Die Funktion wird wie folgt konstruiert:
-
Die Lambda-Funktion erfasst die Variable
multiplierdurch Referenz[&multiplier]; -
Der Rückgabetyp
-> intgibt an, dass die Lambda-Funktion einen Integer zurückgibt; -
Die Lambda-Funktion wird sofort mit dem Argument
5aufgerufen und das Ergebnis in der Variableresultgespeichert.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen