Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der C++-Funktionsparameter: Regeln für die Parameterübergabe in Lambda-Ausdrücken

Detaillierte Erläuterung der C++-Funktionsparameter: Regeln für die Parameterübergabe in Lambda-Ausdrücken

WBOY
WBOYOriginal
2024-04-26 15:54:01505Durchsuche

Parameterübergaberegeln in Lambda-Ausdrücken: Nach Wert: Wird als Wert übergeben. Die Änderung des ursprünglichen Werts hat keine Auswirkungen auf den externen Bereich. Per Referenz: Verwenden Sie die Erfassungsliste [&] oder [=], um Parameter per Referenz zu übergeben und so die Änderung des äußeren Bereichs zu ermöglichen. Durch Verschiebung: Verwenden Sie bei beweglichen Typen die &&-Erfassungsliste, um Parameter durch Verschiebung zu übergeben und so die Leistung zu optimieren.

C++ 函数参数详解:lambda表达式中参数传递的规则

Detaillierte Erläuterung der C++-Funktionsparameter: Regeln für die Parameterübergabe in Lambda-Ausdrücken

Lambda-Ausdruck
Lambda-Ausdruck ist eine prägnante und leistungsstarke anonyme Funktionszeigersyntax. In C++ ist das Grundformat eines Lambda-Ausdrucks:

[capture_list](parameters) -> return_type { body }

Parameterübergaberegeln
Wenn ein Lambda-Ausdruck Parameter enthält, folgt die Parameterübergabe den folgenden Regeln:

  • Nach Wert: Standardmäßig werden Parameter über übergeben Wert Passiv, was bedeutet, dass Änderungen am ursprünglichen Wert nicht im äußeren Bereich widergespiegelt werden.
  • Nach Referenz: Verwenden Sie die Erfassungsliste [&] oder [=], um die Referenz des Parameters zu erfassen, und Sie können den Parameter als Referenz übergeben. [&][=] 捕获列表捕获参数的引用,可以按引用传递参数。
  • By Move: 对于可移动类型,使用 &&
Durch Verschiebung:

Bei beweglichen Typen verwenden Sie die Erfassungsliste &&, um die Verschiebungsreferenz des Parameters zu erfassen, und der Parameter kann durch Verschiebung übergeben werden.

Praktisches Beispiel

Betrachten Sie das folgende C++-Codebeispiel:

#include <iostream>
#include <vector>

int main() {
    // 创建一个 lambda 表达式,按值传递一个整型参数
    auto sum = [](int x) { return x + 1; };

    // 实例化一个 lambda 表达式,按引用传递参数
    int value = 5;
    auto increment = [&value]() { value += 1; };

    // 实例化一个 lambda 表达式,按移动传递 vector
    std::vector<int> vec = {1, 2, 3};
    auto reverse = [vec = std::move(vec)]() {
        std::reverse(vec.begin(), vec.end());
    };

    std::cout << "By Value: " << sum(5) << std::endl;
    increment();
    std::cout << "By Reference: " << value << std::endl;
    reverse();
    std::cout << "By Move: ";
    for (auto elem : vec) {
        std::cout << elem << ' ';
    }
    std::cout << std::endl;

    return 0;
}

Ausgabe:

By Value: 6
By Reference: 6
By Move: 3 2 1

Fazit🎜🎜Das Verständnis der Parameterübergaberegeln in Lambda-Ausdrücken ist entscheidend für deren effektive Verwendung. Durch die korrekte Übergabe von Parametern können Sie interne Variablen ändern oder die Leistung nach Bedarf optimieren. 🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der C++-Funktionsparameter: Regeln für die Parameterübergabe in Lambda-Ausdrücken. 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