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

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

  1. 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.
  2. 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.
  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 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

main.cpp

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 durch Referenz [&multiplier].
  • Der Rückgabetyp -> int gibt an, dass die Lambda-Funktion einen Integer zurückgibt.
  • Die Lambda-Funktion wird sofort mit dem Argument 5 aufgerufen, und das Ergebnis wird in der Variablen result gespeichert.
question mark

Welchen Zweck hat eine Capture-Klausel in einer Lambda-Funktion?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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

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

  1. 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.
  2. 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.
  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 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

main.cpp

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 durch Referenz [&multiplier].
  • Der Rückgabetyp -> int gibt an, dass die Lambda-Funktion einen Integer zurückgibt.
  • Die Lambda-Funktion wird sofort mit dem Argument 5 aufgerufen, und das Ergebnis wird in der Variablen result gespeichert.
question mark

Welchen Zweck hat eine Capture-Klausel in einer Lambda-Funktion?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4
some-alt