Einführung in Lambda-Ausdrücke
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 42 von 56.
Lambda-Ausdrücke sind ein leistungsstarkes C++-Feature, mit dem du kleine, anonyme Funktionen genau dort erstellen kannst, wo du sie benötigst. Stell sie dir als Mini-Funktionen vor, die du definieren und verwenden kannst, ohne eine separate Funktionsdeklaration schreiben zu müssen.
Die grundlegende Syntax für einen Lambda-Ausdruck folgt diesem Muster: [](){}. Die eckigen Klammern [] werden als Capture-Klausel bezeichnet, die runden Klammern () enthalten Parameter (genau wie reguläre Funktionen), und die geschweiften Klammern {} enthalten den Funktionskörper.
Die Capture-Klausel legt fest, welche Variablen aus dem umgebenden Gültigkeitsbereich die Lambda-Funktion verwenden kann. Die häufigsten Formen sind:
[=]: alle lokalen Variablen per Wert erfassen (die Lambda-Funktion erhält eine eigene Kopie)[&]: alle lokalen Variablen per Referenz erfassen (die Lambda-Funktion greift auf die Originale zu)[]: nichts erfassen (die Lambda-Funktion kann keine Variablen außerhalb ihres eigenen Gültigkeitsbereichs verwenden)So erstellst und rufst du eine einfache Lambda-Funktion auf:
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // Call the lambda functionDu kannst eine Lambda-Funktion auch sofort definieren und ausführen, ohne sie in einer Variable zu speichern:
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Lambda-Ausdrücke sind besonders nützlich für kurze, einmalig verwendete Funktionen, die du nicht separat definieren möchtest. Sie machen deinen Code kompakter und halten zusammengehörige Logik beieinander.
Aufgabe
EinfachErstelle ein Programm, das die grundlegende Syntax und Ausführung von Lambda-Ausdrücken demonstriert. Diese Aufgabe testet dein Verständnis dafür, wie man einfache Lambda-Funktionen ohne Parameter definiert und aufruft.
Dein Programm sollte:
- Einen Lambda-Ausdruck erstellen, der
Hello from Lambda!ausgibt - Dieses Lambda mithilfe des Schlüsselworts
autoin einer Variable speichern - Die Lambda-Funktion aufrufen, um sie auszuführen
- Einen zweiten Lambda-Ausdruck erstellen, der
Lambda executed successfully!ausgibt - Dieses zweite Lambda sofort ausführen, ohne es in einer Variable zu speichern
Verwende das folgende exakte Ausgabeformat:
Hello from Lambda!
Lambda executed successfully!Denke daran, dass Lambda-Ausdrücke die Syntax [](){} verwenden, wobei die eckigen Klammern [] die Erfassungsklausel sind, die runden Klammern () Parameter enthalten (bei dieser Aufgabe leer) und die geschweiften Klammern {} den Funktionskörper enthalten. Du kannst ein Lambda mithilfe von auto variableName = [](){...}; in einer Variable speichern und es anschließend mit variableName(); aufrufen. Für die sofortige Ausführung kannst du die Syntax [](){...}(); verwenden, die das Lambda in einer Anweisung definiert und aufruft.
Probier es selbst
#include <iostream>
using namespace std;
int main() {
// TODO: Schreibe deinen Code darunter
// Create a lambda expression that prints "Hello from Lambda!"
// Speichere es in einer Variable mit dem Schlüsselwort auto
// Rufe die Lambda-Funktion auf
// Create a second lambda that prints "Lambda executed successfully!"
// Führe es sofort aus, ohne es in einer Variable zu speichern
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung4Maps (Schlüssel-Wert-Paare)
Einführung in std::mapErstellen einer MapWerte abrufen und ändernAuf Schlüssel prüfenPaare entfernenÜber eine Map iterierenZusammenfassung – Wortfrequenz7Fortgeschrittene Funktionen
ReferenzübergabeEinführung in Lambda-AusdrückeLambdas mit ParameternLambdas mit RückgabewertenEinführung in die RekursionRekursive FakultätLambda Sort2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügenÜbe selbstständig: Online-C++-Compiler