Lambda-Funktioner
Svep för att visa menyn
Lambda-funktioner, eller anonyma funktioner, är en funktion som gör det möjligt att skapa små, namnlösa funktioner direkt i koden. De är särskilt användbara när du behöver en enkel funktion under en kort tid och inte vill definiera en separat namngiven funktion.
Lambda-funktioner är användbara av flera skäl:
Lambda-funktioner gör det möjligt att skriva kort och koncis kod. De är idealiska för operationer som kan uttryckas på några få rader.
De kan fånga variabler från det omgivande omfånget, vilket gör att du kan använda variabler från den överordnade funktionen inom lambdan.
Lambdas kan skickas som argument till andra funktioner, vilket gör dem praktiska för funktioner som std::for_each, std::sort osv.
Hur skapar man en lambda-funktion?
Du kan använda följande syntax för att skapa en lambda-funktion.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
En fångstklausul i en lambda-funktion gör det möjligt att ange vilka variabler från det omgivande omfånget (utanför lambda-funktionen) som kan nås och användas inom lambda-funktionen. Det finns tre vanliga typer av fångstklausuler:
-
Fånga ingenting
[]: lambda-funktionen kan inte komma åt några variabler från det omgivande omfånget; -
Fånga specifika variabler som värde
[var1, var2, ...]: lambda-funktionen kan komma åt specifika variabler från det omgivande omfånget som värde; -
Fånga specifika variabler som referens
[&var1, &var2, ...]: lambda-funktionen kan komma åt specifika variabler från det omgivande omfånget som referens.
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 konstrueras enligt följande:
-
Lambda-funktionen fångar variabeln
multipliergenom referens[&multiplier]; -
Returtypen
-> intanger att lambda-funktionen returnerar ett heltal; -
Lambdan anropas direkt med argumentet
5, och resultatet lagras i variabelnresult.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal