Lambda-funksjoner
Sveip for å vise menyen
Lambda-funksjoner, eller anonyme funksjoner, er en funksjon som lar deg lage små, navnløse funksjoner direkte i koden din. De er spesielt nyttige når du trenger en enkel funksjon for en kort periode og ikke ønsker å definere en egen navngitt funksjon.
Lambda-funksjoner er nyttige av flere grunner:
Lambda-funksjoner lar deg skrive kort og konsis kode. De er ideelle for operasjoner som kan uttrykkes på noen få linjer.
De kan fange opp variabler fra det omkringliggende omfanget, slik at du kan bruke variabler fra foreldrefunksjonen inne i lambdaen.
Lambdaer kan sendes som argumenter til andre funksjoner, noe som gjør dem praktiske for funksjoner som std::for_each, std::sort osv.
Hvordan lage en lambda-funksjon?
Du kan bruke følgende syntaks for å lage en lambda-funksjon.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
En capture-klausul i en lambda-funksjon lar deg spesifisere hvilke variabler fra det omkringliggende omfanget (utenfor lambda-funksjonen) som kan nås og brukes inne i lambda-funksjonen. Det finnes 3 vanlige typer capture-klausuler:
-
Ingen variabler fanges
[]: lambda-funksjonen kan ikke få tilgang til noen variabler fra det omkringliggende omfanget; -
Spesifikke variabler fanges etter verdi
[var1, var2, ...]: lambda-funksjonen kan få tilgang til spesifikke variabler fra det omkringliggende omfanget etter verdi; -
Spesifikke variabler fanges som referanse
[&var1, &var2, ...]: lambda-funksjonen kan få tilgang til spesifikke variabler fra det omkringliggende omfanget som referanse.
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; }
Funksjonen er konstruert slik:
-
Lambda-funksjonen fanger variabelen
multipliermed referanse[&multiplier]; -
Returtypen
-> intangir at lambda-funksjonen returnerer et heltall; -
Lambdaen blir umiddelbart kalt med argumentet
5, og resultatet lagres i variabelenresult.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår