Heim > Backend-Entwicklung > C++ > Wie erfasst ein C++-Lambda-Ausdruck externe Variablen?

Wie erfasst ein C++-Lambda-Ausdruck externe Variablen?

WBOY
Freigeben: 2024-04-17 16:39:02
Original
847 Leute haben es durchsucht

Es gibt drei Möglichkeiten, Lambda-Ausdrücke externer Variablen in C++ zu erfassen: Erfassung nach Wert: Erstellen Sie eine Kopie der Variablen. Erfassen nach Referenz: Rufen Sie eine Variablenreferenz ab. Gleichzeitige Erfassung nach Wert und Referenz: Ermöglicht die Erfassung mehrerer Variablen, entweder nach Wert oder nach Referenz.

C++ lambda 表达式如何捕获外部变量?

C++-Lambda-Ausdruck: Externe Variablen erfassen

Lambda-Ausdruck ist ein leistungsstarkes Tool in C++, mit dem wir anonyme Funktionen innerhalb von Funktionen definieren können. Manchmal müssen wir in Lambda-Ausdrücken auf externe Variablen zugreifen. In diesem Tutorial werden einige verschiedene Möglichkeiten zum Erfassen externer Variablen behandelt.

Methode 1: Erfassung nach Wert

Mit der Syntax [var] können wir die Variable var nach Wert erfassen. Das bedeutet, dass der Lambda-Ausdruck eine Kopie der Variablen erstellt. [var] 语法,我们可以按值捕获变量 var。这意味着 lambda 表达式将创建该变量的副本。

auto var = 10;
auto lambda = [var] {
  // 这里可以使用 var
  return var;
};
Nach dem Login kopieren

方法 2:按引用捕获

使用 [&var] 语法,我们可以按引用捕获变量 var。这意味着 lambda 表达式将获得对变量的引用。

auto var = 10;
auto lambda = [&var] {
  // 这里可以使用 var 并修改它
  var++;
  return var;
};
Nach dem Login kopieren

方法 3:按值和引用捕获

我们可以按值和引用同时捕获多个变量。例如,以下 lambda 表达式按值捕获 val,按引用捕获 ref

auto func = [](int val, int& ref) {
  // val 是按值捕获的,ref 是按引用捕获的
};
Nach dem Login kopieren

Methode 2: Erfassung durch Referenz

Mit der [&var]-Syntax können wir die Variable var durch Referenz erfassen. Das bedeutet, dass der Lambda-Ausdruck einen Verweis auf die Variable erhält.

#include <iostream>
#include <vector>

using namespace std;

int main() {
  // 按值捕获
  int num = 10;
  auto lambda1 = [num] { return num++; };
  cout << lambda1() << endl;  // 输出 10

  // 按引用捕获
  vector<int> myVector{1, 2, 3};
  auto lambda2 = [&myVector] { myVector.push_back(4); };
  lambda2();
  for (auto& elem : myVector) {
    cout << elem << " ";  // 输出 1 2 3 4
  }
  cout << endl;

  return 0;
}
Nach dem Login kopieren
Methode 3: Erfassung nach Wert und Referenz🎜🎜Wir können mehrere Variablen gleichzeitig nach Wert und Referenz erfassen. Der folgende Lambda-Ausdruck erfasst beispielsweise val nach Wert und ref nach Referenz: 🎜rrreee🎜Ein praktisches Beispiel🎜🎜Das folgende Beispiel zeigt, wie die externe Erfassung nach Wert und verwendet wird per Referenz Variable: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie erfasst ein C++-Lambda-Ausdruck externe Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage