Lambdas mit Parametern
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 43 von 56.
Nachdem du nun die grundlegende Lambda-Syntax verstanden hast, machen wir Lambdas durch das Hinzufügen von Parametern nützlicher. Genau wie reguläre Funktionen können Lambdas Eingabewerte akzeptieren, mit denen sie arbeiten.
Um Parameter zu einer Lambda-Funktion hinzuzufügen, platziere sie innerhalb der Klammern nach der Capture-Klausel:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Gibt aus: Sum: 8Die Parametersyntax funktioniert genau wie bei regulären Funktionsparametern – Sie geben den Typ gefolgt vom Parameternamen an. Sie können mehrere Parameter durch Kommas getrennt angeben, genau wie oben gezeigt.
Du kannst eine Lambda-Funktion auch sofort mit Parametern aufrufen, ohne sie zu speichern:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Gibt aus: Product: 28Diese Fähigkeit, Parameter zu akzeptieren, macht Lambdas wesentlich flexibler und wiederverwendbarer, da sie es Ihnen ermöglicht, kleine Funktionen zu erstellen, die bei jedem Aufruf unterschiedliche Eingabewerte verarbeiten können.
Aufgabe
EinfachErstelle ein Programm, das Lambda-Ausdrücke mit Parametern demonstriert, indem es einen einfachen Taschenrechner erstellt, der verschiedene mathematische Operationen ausführt. Diese Herausforderung testet dein Verständnis dafür, wie man Lambda-Ausdrücke definiert, die Eingabewerte akzeptieren und mit ihnen arbeiten.
Die folgenden Eingaben werden bereitgestellt:
- Zwei Ganzzahlen
num1undnum2, die die Zahlen für die Berechnungen darstellen - Ein Zeichen
operation, das die auszuführende mathematische Operation darstellt
Dein Programm sollte:
- Einen Lambda-Ausdruck namens
adderstellen, der zwei Ganzzahlparameter übernimmt und ihre Summe im FormatSum: [result]ausgibt - Einen Lambda-Ausdruck namens
subtracterstellen, der zwei Ganzzahlparameter übernimmt und ihre Differenz im FormatDifference: [result]ausgibt - Einen Lambda-Ausdruck namens
multiplyerstellen, der zwei Ganzzahlparameter übernimmt und ihr Produkt im FormatProduct: [result]ausgibt - Die beiden Zahlen und das Operationszeichen aus der Eingabe lesen
- Abhängig vom Operationszeichen das passende Lambda mit den beiden Zahlen aufrufen
Das Operationszeichen ist eines der folgenden:
+für die Addition (dasadd-Lambda aufrufen)-für die Subtraktion (dassubtract-Lambda aufrufen)*für die Multiplikation (dasmultiply-Lambda aufrufen)
Verwende abhängig von der Operation das folgende exakte Ausgabeformat:
Für die Addition:
Sum: [result]Für die Subtraktion:
Difference: [result]Für die Multiplikation:
Product: [result]Denke daran, dass Lambda-Parameter innerhalb der Klammern nach der Capture-Klausel definiert werden, wobei dieselbe Syntax wie bei regulären Funktionsparametern verwendet wird. Speichere jedes Lambda mit dem Schlüsselwort auto in einer Variable und rufe anschließend abhängig vom eingegebenen Operationszeichen das passende Lambda mithilfe einer if-else-Anweisung oder einer switch-Anweisung auf.
Probier es selbst
#include <iostream>
using namespace std;
int main() {
// Eingabe lesen
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Lambda-Ausdrücke für Additions-, Subtraktions- und Multiplikationsoperationen erstellen
// TODO: if-else- oder switch-Anweisung verwenden, um das entsprechende Lambda basierend auf der Operation aufzurufen
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