Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Syntaxregeln für C++-Lambda-Ausdrücke?

Was sind die Syntaxregeln für C++-Lambda-Ausdrücke?

WBOY
WBOYOriginal
2024-06-01 17:33:001038Durchsuche

Lambda-Ausdruck ist eine anonyme Funktion mit der folgenden Syntax: [Erfassungsliste] (Parameterliste) -> Rückgabetyp {Funktionskörper} Die Erfassungsliste gibt die Variablen an, die aus der Umgebung erfasst werden sollen, die Parameterliste gibt die Parameterliste an , und der Rückgabetyp gibt den Rückgabetyp an, der Funktionskörper definiert den Funktionskörper. Capture-Variablen werden per Referenz erfasst und der Typ kann aus der Capture-Liste, der Parameterliste und dem Rückgabetyp abgeleitet werden.

C++ Lambda 表达式的语法规则是什么?

Syntaxregeln für C++-Lambda-Ausdrücke

Ein Lambda-Ausdruck ist eine anonyme Funktion, mit der Sie ein aufrufbares Objekt erstellen können, ohne eine explizite Funktion zu definieren. Die Syntax lautet wie folgt:

[capture list] (parameter list) -> return type { function body }

Wobei:

  • Erfassungsliste: Gibt eine Liste von Variablen an, die aus der Umgebung erfasst werden sollen.
  • Parameterliste: Geben Sie die Parameterliste des Lambda-Ausdrucks an.
  • Rückgabetyp: Geben Sie den Rückgabetyp des Lambda-Ausdrucks an. Kann weggelassen werden. In diesem Fall gibt der Lambda-Ausdruck void zurück.
  • Funktionskörper: Definieren Sie den Funktionskörper des Lambda-Ausdrucks.

Hier einige Beispiele:

// Capture 变量 x 并返回 x 的平方
auto square = [](int x) { return x * x; };

// 捕获变量 y 并返回 y 的立方
auto cube = [&](int y) { return y * y * y; };

Hinweis:

  • Lambda-Ausdrücke können in C++11 und höher verwendet werden.
  • Erfasste Variablen in Lambda-Ausdrücken werden als Referenz erfasst, es sei denn, die Erfassung als Wert wird explizit angegeben.
  • Der Typ eines Lambda-Ausdrucks kann basierend auf der Erfassungsliste, der Parameterliste und dem Rückgabetyp abgeleitet werden.

Praktischer Fall

Das Folgende ist ein einfaches Beispiel für die Verwendung des Lambda-Ausdrucks:

#include <iostream>
#include <vector>

using namespace std;

int main() {
  // 使用 lambda 表达式对向量中的每个元素平方
  vector<int> numbers = {1, 2, 3, 4, 5};
  for_each(numbers.begin(), numbers.end(), [](int& num) { num *= num; });

  // 使用 lambda 表达式对向量进行排序
  sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; });

  // 打印排序后的向量
  for (int num : numbers) {
    cout << num << " ";
  }
  cout << endl;

  return 0;
}

Das obige ist der detaillierte Inhalt vonWas sind die Syntaxregeln für C++-Lambda-Ausdrücke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn