Lambdas in C ++

Lambdas in C ++
“Con l'aiuto delle illustrazioni, discuteremo delle funzioni C ++ Lambda in questo articolo.

Possiamo definire le istanze del metodo anonimo nelle dichiarazioni Lambda C ++, che potrebbero quindi essere utilizzate in linea o fornite come parametri. Dal momento che non dovremo sovrascrivere l'operatore in una classe o una struttura diversa, sono molto più efficaci."

Sintassi della funzione Lambda

L'introduzione Lambda [] in questo caso rappresenta l'inizio della dichiarazione Lambda e l'elenco degli argomenti [] è identico all'operatore () di un metodo standard.

Esempio n. 1

In questo caso, abbiamo compilato un codice di istruzione Lambda di base C ++ che visualizza il nome della Germania.

#includere
Utilizzo dello spazio dei nomi std;
int main ()
auto country = [] ()
cout << "Germany";
;
Paese();
restituzione 0;

Includeremo il file di intestazione richiesto e lo spazio dei nomi standard all'inizio del programma. Quindi iniziamo la codifica all'interno della funzione principale (). Creeremo un metodo Lambda utilizzando la parola chiave "Auto". Assegnare il "paese" variabile al metodo Lambda. Quindi, utilizzando la variabile del paese e l'operatore (), abbiamo invocato il metodo Lambda. Inoltre, abbiamo usato la dichiarazione "cout" per stampare il nome del paese. Invociamo la funzione Lambda. Alla fine, inseriamo il comando "return 0".

Esempio n. 2

Le dichiarazioni Lambda richiederebbero anche argomenti, proprio come un metodo standard. Qui, abbiamo costruito un metodo Lambda che mostra la somma di due numeri. Il metodo Lambda è stato quindi invocato con due parametri interi.

#includere
Utilizzo dello spazio dei nomi std;
int main ()
auto add = [] (int x, int y)
cout << "Sum of two numbers = " << x + y;
;
Aggiungi (250, 69);
restituzione 0;

Iniziamo il programma includendo la biblioteca . Quindi utilizziamo lo spazio dei nomi standard. Chiameremo la funzione principale (). Ora creiamo una funzione Lambda di "Aggiungi". Qui passiamo due variabili come argomenti di questa funzione. L'istruzione "cout" viene utilizzata per stampare la somma di questi valori specificati. Nel passaggio successivo, chiamiamo il metodo Lambda. Questo metodo contiene due numeri interi come parametri. Infine, dobbiamo inserire il comando "return 0".

Esempio n. 3

Qui, abbiamo costruito un metodo Lambda per determinare sia la media di 2 numeri che la somma di 2 numeri. Fornendo "S" come terzo parametro a Main (), possiamo calcolare la somma di due numeri. Anche se il lambda fornisce un numero casuale in questo caso, la conversione a doppio tipo viene effettuata direttamente. La media viene quindi calcolata utilizzando una stringa diversa come parametro:

#includere
Utilizzo dello spazio dei nomi std;
int main ()
auto op = [] (int i, int j, string op) -> double
if (op == "s")
restituire i + j;

altro
return (i + j) / 2.0;

;
int n_1 = 11;
int n_2 = 21;
auto s = op (n_1, n_2, "s");
cout << "Sum of two numbers= " << s << endl;
Auto media = op (n_1, n_2, "media");
cout << "Average = " << average;
restituzione 0;

Integreremo il modulo per le funzionalità di input e output. La funzione Lambda sarà stata creata nel prossimo passaggio. Qui la funzione Lambda "OP" è applicata dal suo tipo di ritorno esplicito "Double". Questa funzione Lambda restituisce la somma o la media dei valori. Forniremo due variabili con un tipo di dati interi e una stringa come parametri della funzione Lambda.

Inoltre, abbiamo applicato la dichiarazione "if". Se il valore della variabile "OP" è uguale alla somma dei numeri. Quindi restituisce il valore aggiungendo entrambi i numeri. Altrimenti, restituisce la media dividendo la somma dei numeri per 2. Inizializziamo due nuove variabili e impostiamo i loro valori. Usiamo l'istruzione "cout" per mostrare la somma. Ora per ottenere la media dei valori richiesti, applichiamo la funzione Lambda "media". Abbiamo dato i numeri interi come argomenti a questa funzione Lambda. L'istruzione "cout" verrà utilizzata per mostrare il valore medio. Per terminare il codice, impiegheremo "restituire 0".

Esempio n. 4

Per impostazione predefinita, i metodi Lambda non sono in grado di recuperare le variabili della funzione rientrata. Utilizziamo l'istruzione di acquisizione per ottenere l'accesso a tali attributi. Questo è identico a invocare un metodo per valore. Quando la lambda è costruita in questo caso, viene preso il valore originale. La variabile inclusa nell'argomento Lambda verrà letta solo a questo punto; non può essere cambiato.

Quello che segue è un esempio di una semplice funzione Lambda con cattura per valore:

Pertanto, la funzione Lambda ha l'accessibilità alla variabile INT "N" a causa delle "S" iniziali. Poiché int "n" non verrà recuperato dal corpo lambda a meno che non lo eliminiamo dalla clausola di cattura, allora troveremo un errore.

#includere
Utilizzo dello spazio dei nomi std;
int main ()
int iniziale_s = 389;
auto add_to_s = [iniziale_s] (int n)
restituire iniziale_s + n;
;
int final_s = add_to_s (45);
cout << "389 + 45 = " << final_s;
restituzione 0;

Prima di tutto, per i processi di input e output, verrà incluso il file di intestazione. Insieme a questo spazio dei nomi standard verrà aggiunto. Ora chiamiamo la funzione principale (). All'interno del corpo della funzione principale (), inizializziamo una variabile "iniziale_s". Specifichiamo il valore "389" a questa variabile. Quindi acquisiamo la variabile "iniziale_s" per il suo valore. Quindi abbiamo usato la funzione lambda di "add_to_s". Passeremo due variabili come parametro alla funzione Lambda.

Il primo parametro mostra la variabile "iniziale_s" e il secondo parametro mostra la variabile "N". La somma sarà mantenuta in una variabile "Final_s". Il tipo di dati di questa variabile è un numero intero. Prima di aggiungere il comando "return 0", dobbiamo utilizzare l'istruzione "cout". L'istruzione "cout" mostra il valore risultante.

Conclusione

La Guida alle dichiarazioni Lambda C ++ si è conclusa. La nuova nozione in C ++, esecuzione in linea, è molto utile ogni volta che dobbiamo eseguire un breve pezzo di codice. Inoltre, Lambdas può essere dichiarato generico e applicato a qualsiasi tipo di dati. Questo articolo ha quattro istanze separate che abbiamo completamente implementato. La funzione Lambda viene utilizzata senza alcun argomento in prima istanza. Forniamo al metodo Lambda una varietà di parametri nel secondo esempio. Allo stesso modo, abbiamo utilizzato il tipo di ritorno esplicito del metodo Lambda nel terzo scenario. La funzione Lambda e la clausola di cattura sono state utilizzate nell'ultimo.