C++-Lambda-Ausdrücke unterstützen Abschlüsse, die Funktionsbereichsvariablen speichern und sie für Funktionen zugänglich machen. Die Syntax ist [capture-list] (parameters) -> return-type { function-body }. Capture-Liste definiert die zu erfassenden Variablen. Sie können [=] verwenden, um alle lokalen Variablen nach Wert zu erfassen, [&], um alle lokalen Variablen nach Referenz zu erfassen, oder [Variable1, Variable2, ...], um bestimmte Variablen zu erfassen. Lambda-Ausdrücke können nur auf erfasste Variablen zugreifen, den ursprünglichen Wert jedoch nicht ändern.
Abschlüsse in C++-Lambda-Ausdrücken
Ein Abschluss ist eine Reihe verwandter Variablen, die außerhalb des Funktionsbereichs gespeichert werden und auf die die Funktion zugreifen kann. In C++ werden Abschlüsse durch Lambda-Ausdrücke implementiert, um Variablen im Ausführungskontext einer Funktion zu erfassen.
Syntax
Die allgemeine Syntax des C++-Lambda-Ausdrucks lautet wie folgt:
[capture-list] (parameters) -> return-type { function-body }
wobei capture-list
die zu erfassenden Variablen definiert, die auf folgende Weise verwendet werden können: capture-list
定义要捕获的变量,可以采用以下方式:
[=]
: 捕获所有局部变量按值[&]
: 捕获所有局部变量按引用[variable1, variable2, ...]
: 按值或引用捕获特定变量实战案例
让我们考虑一个需要访问其外部函数作用域变量的 Lambda 表达式。以下代码段演示了此功能:
#include <iostream> int main() { int value = 10; auto lambda = [value] () { std::cout << value << std::endl; }; lambda(); // 输出 10 return 0; }
在这个例子中,Lambda 表达式捕获 value
变量按值,并可以在其函数体内访问。
注意
mutable
[=]
: Alle lokalen Variablen nach Wert erfassen[&]
: Alle lokalen Variablen nach Referenz erfassen [Variable1, Variable2, .. .]
: Erfassen Sie eine bestimmte Variable nach Wert oder Referenz 🎜🎜🎜🎜 Praktisches Beispiel 🎜🎜🎜 Betrachten wir einen Lambda-Ausdruck, der auf seine äußere Funktionsbereichsvariable zugreifen muss. Der folgende Codeausschnitt demonstriert diese Funktionalität: 🎜rrreee🎜 In diesem Beispiel erfasst der Lambda-Ausdruck die Variable value
nach Wert und kann innerhalb ihres Funktionskörpers aufgerufen werden. 🎜🎜🎜Hinweis🎜🎜mutable
, um den Wert einer erfassten Variablen in einem Lambda-Ausdruck zu ändern. 🎜🎜Das obige ist der detaillierte Inhalt vonWie implementiert man einen Abschluss im C++-Lambda-Ausdruck?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!