Heim > Backend-Entwicklung > C++ > Wie erfasst man externe Variablen in Lambda-Ausdrücken korrekt?

Wie erfasst man externe Variablen in Lambda-Ausdrücken korrekt?

DDD
Freigeben: 2024-10-23 18:18:02
Original
632 Leute haben es durchsucht

How to Correctly Capture External Variables in Lambda Expressions?

Fehler: Erfassen externer Variablen in Lambda-Ausdrücken

Bei der Verwendung von Lambda-Ausdrücken ist es wichtig anzugeben, wie externe Variablen erfasst werden sollen. Im bereitgestellten Code erfordert der Lambda-Ausdruck im std::remove_if-Algorithmus Zugriff auf die externe Variable flagId. Der gemeldete Fehler weist jedoch darauf hin, dass der Aufnahmemodus fehlt.

Lösung:

Um dieses Problem zu beheben, muss der Aufnahmemodus explizit in eckigen Klammern angegeben werden ([ ]). Dadurch kann der Lambda-Ausdruck innerhalb seines Gültigkeitsbereichs auf externe Variablen zugreifen. Es gibt drei Haupterfassungsmodi:

  • [&flagId]: Erfasst flagId als Referenz. Dies bedeutet, dass sich alle an der FlagId innerhalb des Lambda vorgenommenen Änderungen auf die ursprüngliche FlagId-Variable auswirken.
  • [flagId]: Erfasst flagId nach Wert. Dadurch wird eine lokale Kopie der FlagId erstellt, die nicht innerhalb des Lambda geändert werden kann.
  • [=]: Erfasst alle externen Variablen nach Wert. Dadurch werden lokale Kopien aller externen Variablen erstellt.

Für den bereitgestellten Code ist der geeignete Erfassungsmodus „per Referenz“, da er auf den aktualisierten Wert von flagId zugreifen muss. Daher lautet der korrigierte Lambda-Ausdruck:

<code class="cpp">[&flagId](Flag&amp; device) {
    return device.getId() == flagId;
}</code>
Nach dem Login kopieren

Durch Angabe des Erfassungsmodus kann der Lambda-Ausdruck korrekt auf die externe Variable flagId zugreifen und die gewünschte Operation ausführen.

Das obige ist der detaillierte Inhalt vonWie erfasst man externe Variablen in Lambda-Ausdrücken korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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