Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Lambda-Funktionen | Einige Fortgeschrittene Themen
C++ Funktionen
course content

Kursinhalt

C++ Funktionen

C++ Funktionen

1. Einführung
2. Funktionsargumente Spezifikation
3. Spezifikation von Funktionsrückgabewerten
4. Einige Fortgeschrittene Themen

book
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:

  1. 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.
  2. Lokaler Geltungsbereich: Sie können Variablen aus dem umgebenden Scope erfassen, wodurch du Variablen der übergeordneten Funktion innerhalb der Lambda-Funktion verwenden kannst.
  3. 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.
cpp

main

copy
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 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 Variable result gespeichert.
Was ist der Zweck einer Capture-Klausel in einer Lambda-Funktion?

Was ist der Zweck einer Capture-Klausel in einer Lambda-Funktion?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt