Die Standardsyntax zum Schreiben von C++-Funktions-Lambda-Ausdrücken lautet: [capture](parameters) -> return_type { // Funktionskörper}, wobei „capture“ die Erfassung externer Variablen, „parameters“ die Funktionsparameter und „return_type“ die Funktionsrückgabe ist Werttyp. Seine Typen sind nach Erfassungsliste und Parameterliste unterteilt: Alle externen Variablen erfassen, keine Parameter: Automatischer Typ, spezifische externe Variablen erfassen, keine Parameter: Automatischer Typ (kann reduziert werden, Parameter: Funktionstyp); Mit Lambda-Ausdrücken werden temporäre Funktionsobjekte erstellt, die Variablen oder Funktionszeigern zugewiesen oder direkt als Argumente übergeben werden können. ?? ] (alle externen Variablen erfassen)
parameters
: Funktionsparameter, optional
return_type
: Funktionsrückgabewerttyp, optionalLambda-Ausdruckstyp :
Der Lambda-Ausdruck ist ein anonymer Funktionstyp. Sein Typ hängt von der Erfassungsliste und der Parameterliste ab:
Erfassung aller externen Variablen, keine Parameter: Typauto
auto
(Kann reduziert werden) capture
:捕获外部变量,可选,默认为 [&]
(捕获所有外部变量)parameters
:函数参数,可选return_type
:函数返回值类型,可选Lambda 表达式类型:
Lambda 表达式属于匿名函数类型。其类型取决于捕获列表和参数列表:
auto
类型auto
类型(可缩小)function<return_type(parameters)>
类型使用规范:
this
function<return_type(parameters)>
Typ Verwendungsspezifikation:
Der Lambda-Ausdruck wird zum Erstellen eines temporären Funktionsobjekts verwendet .
🎜Es kann einer Variablen oder einem Funktionszeiger zugewiesen oder direkt als Parameter übergeben werden. 🎜🎜Auf erfasste externe Variablen kann in einem Lambda-Ausdruck zugegriffen werden, sie können jedoch nicht geändert werden (sofern sie nicht durch Referenz erfasst werden). 🎜🎜Derthis
-Zeiger in Lambda-Ausdrücken zeigt auf den Kontext, in dem sie erstellt wurden. 🎜🎜🎜🎜Aktueller Fall: 🎜🎜[capture](parameters) -> return_type { // 函数体 }
// 捕获所有外部变量,无参数 auto lambda1 = []() { // 可以访问外部变量 std::cout << "Lambda 1: " << x << std::endl; }; // 捕获特定外部变量,无参数 int x = 10; auto lambda2 = [x]() { // 只可以访问捕获的外部变量 x std::cout << "Lambda 2: " << x << std::endl; }; // 无捕获,有参数 auto lambda3 = [](int y) { // 没有捕获外部变量,y 为函数参数 std::cout << "Lambda 3: " << y << std::endl; }; int main() { lambda1(); lambda2(); lambda3(20); return 0; }
Das obige ist der detaillierte Inhalt vonWas sind die Schreibspezifikationen für Funktions-Lambda-Ausdrücke in C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!