Funzioni Lambda
Scorri per mostrare il menu
Le funzioni lambda, o funzioni anonime, sono una caratteristica che permette di creare piccole funzioni senza nome direttamente nel codice. Sono particolarmente utili quando è necessaria una funzione semplice per un breve periodo di tempo e non si desidera definire una funzione con nome separata.
Le funzioni lambda sono utili per diversi motivi:
Le funzioni lambda permettono di scrivere codice breve e conciso. Sono ideali per operazioni che possono essere espresse in poche righe.
Possono catturare variabili dallo scope circostante, consentendo di utilizzare variabili della funzione genitore all'interno della lambda.
Le lambda possono essere passate come argomenti ad altre funzioni, risultando utili per funzioni come std::for_each, std::sort, ecc.
Come creare una funzione lambda?
È possibile utilizzare la seguente sintassi per creare una funzione lambda.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
Una clausola di cattura in una funzione lambda consente di specificare quali variabili dall'ambito circostante (al di fuori della funzione lambda) possono essere accessibili e utilizzate all'interno della funzione lambda. Esistono 3 tipi comuni di clausole di cattura:
-
Non catturare nulla
[]: la funzione lambda non può accedere a nessuna variabile dall'ambito circostante; -
Catturare variabili specifiche per valore
[var1, var2, ...]: la funzione lambda può accedere a variabili specifiche dall'ambito circostante per valore; -
Catturare variabili specifiche per riferimento
[&var1, &var2, ...]: la funzione lambda può accedere a variabili specifiche dall'ambito circostante per riferimento.
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; }
La funzione è costruita come segue:
-
La funzione lambda cattura la variabile
multiplierper riferimento[&multiplier]; -
Il tipo di ritorno
-> intspecifica che la funzione lambda restituisce un intero; -
La lambda viene invocata immediatamente con l'argomento
5e il risultato viene memorizzato nella variabileresult.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione