Lambda-Funktioner
Stryg for at vise menuen
Lambda-funktioner, eller anonyme funktioner, er en funktionalitet, der gør det muligt at oprette små, unavngivne funktioner direkte i din kode. De er særligt nyttige, når du har brug for en simpel funktion i en kort periode og ikke ønsker at definere en separat navngiven funktion.
Lambda-funktioner er nyttige af flere grunde:
Lambda-funktioner gør det muligt at skrive kort og præcis kode. De er ideelle til operationer, der kan udtrykkes på få linjer.
De kan fange variabler fra det omgivende scope, hvilket gør det muligt at bruge variabler fra den overordnede funktion inden for lambdaen.
Lambdas kan videregives som argumenter til andre funktioner, hvilket gør dem praktiske til funktioner som std::for_each, std::sort osv.
Hvordan opretter man en lambda-funktion?
Du kan bruge følgende syntaks til at oprette en lambda-funktion.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
En capture-klausul i en lambda-funktion gør det muligt at angive, hvilke variable fra det omgivende scope (uden for lambda-funktionen) der kan tilgås og bruges inden i lambda-funktionen. Der findes 3 almindelige typer af capture-klausuler:
-
Ingen capture
[]: lambda-funktionen kan ikke tilgå nogen variable fra det omgivende scope; -
Capture af specifikke variable ved værdi
[var1, var2, ...]: lambda-funktionen kan tilgå specifikke variable fra det omgivende scope ved værdi; -
Capture af specifikke variable ved reference
[&var1, &var2, ...]: lambda-funktionen kan tilgå specifikke variable fra det omgivende scope ved reference.
main.cpp
1234567891011121314#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // With explicit return type (`int`) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << result << std::endl; }
Funktionen konstrueres som følger:
-
Lambda-funktionen fanger variablen
multiplierved reference[&multiplier]; -
Returtypen
-> intangiver, at lambda-funktionen returnerer et heltal; -
Lambdaen bliver straks kaldt med argumentet
5, og resultatet gemmes i variablenresult.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat