Lambda-Funktionen
Lambda-Funktionen, auch anonyme Funktionen genannt, sind eine Funktionalität, mit der Sie kleine, unbenannte Funktionen direkt im Code erstellen können. Sie sind besonders nützlich, wenn Sie eine einfache Funktion für einen kurzen Zeitraum benötigen und keine separate benannte Funktion definieren möchten.
Lambda-Funktionen sind aus mehreren Gründen nützlich:
- Kompaktheit: Lambda-Funktionen ermöglichen es, kurzen und prägnanten Code zu schreiben. Sie eignen sich ideal für Operationen, die in wenigen Zeilen ausgedrückt werden können.
- Lokaler Gültigkeitsbereich: Sie können Variablen aus dem umgebenden Gültigkeitsbereich erfassen, sodass Sie Variablen aus der übergeordneten Funktion innerhalb der Lambda verwenden können.
- Flexibilität: Lambdas können als Argumente an andere Funktionen übergeben werden, was sie praktisch für Funktionen wie
std::for_each,std::sortusw. macht.
Wie erstellt man eine Lambda-Funktion?
Wir können die folgende Syntax verwenden, um eine Lambda-Funktion zu erstellen:
[capture_clause](parameter_list) -> return_type {
// function body
}
Eine Capture-Klausel in einer Lambda-Funktion ermöglicht es, anzugeben, 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
12345678910111213#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
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 wird in der Variablenresultgespeichert.
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
Can you give an example of a lambda function in C++?
What does it mean to capture a variable by reference in a lambda?
When should I use a lambda function instead of a regular function?
Awesome!
Completion rate improved to 5
Lambda-Funktionen
Swipe um das Menü anzuzeigen
Lambda-Funktionen, auch anonyme Funktionen genannt, sind eine Funktionalität, mit der Sie kleine, unbenannte Funktionen direkt im Code erstellen können. Sie sind besonders nützlich, wenn Sie eine einfache Funktion für einen kurzen Zeitraum benötigen und keine separate benannte Funktion definieren möchten.
Lambda-Funktionen sind aus mehreren Gründen nützlich:
- Kompaktheit: Lambda-Funktionen ermöglichen es, kurzen und prägnanten Code zu schreiben. Sie eignen sich ideal für Operationen, die in wenigen Zeilen ausgedrückt werden können.
- Lokaler Gültigkeitsbereich: Sie können Variablen aus dem umgebenden Gültigkeitsbereich erfassen, sodass Sie Variablen aus der übergeordneten Funktion innerhalb der Lambda verwenden können.
- Flexibilität: Lambdas können als Argumente an andere Funktionen übergeben werden, was sie praktisch für Funktionen wie
std::for_each,std::sortusw. macht.
Wie erstellt man eine Lambda-Funktion?
Wir können die folgende Syntax verwenden, um eine Lambda-Funktion zu erstellen:
[capture_clause](parameter_list) -> return_type {
// function body
}
Eine Capture-Klausel in einer Lambda-Funktion ermöglicht es, anzugeben, 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
12345678910111213#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
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 wird in der Variablenresultgespeichert.
Danke für Ihr Feedback!