Lambdas i C ++

Lambdas i C ++
“Ved hjelp av illustrasjoner vil vi diskutere C ++ Lambda -funksjoner i denne artikkelen.

Vi kan definere anonyme metodeforekomster i C ++ Lambda -utsagn, som deretter kan brukes inline eller leveres som parametere. Siden vi ikke trenger å overstyre operatøren i en annen klasse eller struktur, er de mye mer effektive.”

Syntaks av lambda -funksjon

Lambda -introduksjonen [] i dette tilfellet representerer begynnelsen på Lambda -uttalelsen, og argumentlisten [] er identisk med () operatøren av en standardmetode.

Eksempel nr. 1

I dette tilfellet har vi samlet en grunnleggende C ++ Lambda -uttalelseskode som viser navnet på Tyskland.

#inkludere
ved hjelp av navneområdet STD;
int main ()
auto country = [] ()
cout << "Germany";
;
land();
return 0;

Vi vil inkludere den nødvendige overskriftsfilen og standard navneområdet ved start av programmet. Så starter vi kodingen inne i hoved- () -funksjonen. Vi vil lage en lambda -metode ved å bruke nøkkelordet “Auto”. Vi vil tilordne variabelen "landet" til lambda -metoden. Deretter, ved å bruke landsvariabelen og () -operatøren, har vi påkalt lambda -metoden. Videre har vi brukt "cout" -uttalelsen for å skrive ut navnet på landet. La oss påkalle lambda -funksjonen. Til slutt oppgir vi bare “Return 0” -kommandoen.

Eksempel nr. 2

Lambda -uttalelser vil også kreve argumenter, akkurat som en standardmetode. Her har vi konstruert en lambda -metode som viser summen av to tall. Lambda -metoden ble deretter påkalt med to heltallparametere.

#inkludere
ved hjelp av navneområdet STD;
int main ()
auto add = [] (int x, int y)
cout << "Sum of two numbers = " << x + y;
;
Legg til (250, 69);
return 0;

Vi starter programmet med å inkludere biblioteket . Så bruker vi standard navneområde. Vi vil kalle hovedfunksjonen (). Nå lager vi en lambda -funksjon av “Legg til”. Her passerer vi to variabler som argumenter for denne funksjonen. "Cout" -uttalelsen brukes til å skrive ut summen av disse spesifiserte verdiene. I neste trinn kaller vi lambda -metoden. Denne metoden inneholder to heltall som parametere. Til slutt må vi oppgi kommandoen 'Return 0'.

Eksempel nr. 3

Her har vi konstruert en lambda -metode for å bestemme både gjennomsnittet av 2 tall og summen av 2 tall. Ved å tilby "S" som den tredje parameteren til Main (), kan vi beregne summen av to tall. Selv om lambda gir et tilfeldig tall i dette tilfellet, gjøres konvertering av dobbelt type direkte. Gjennomsnittet beregnes deretter ved å bruke en annen streng som parameter:

#inkludere
ved hjelp av navneområdet STD;
int main ()
auto op = [] (int i, int j, streng op) -> dobbelt
if (op == "s")
return i + j;

annet
Retur (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 gjennomsnitt = op (n_1, n_2, "gjennomsnitt");
cout << "Average = " << average;
return 0;

Vi kommer til å integrere modulen for input- og utgangsfunksjoner. Lambda -funksjonen vil ha blitt opprettet i neste trinn. Her brukes Lambda -funksjonen “OP” av dens eksplisitte returtype “Double”. Denne lambda -funksjonen returnerer summen eller gjennomsnittet av verdiene. Vi vil gi to variabler som har en heltalldatatype og en streng som parametrene til lambda -funksjonen.

Videre har vi brukt "hvis" -uttalelsen. Hvis verdien av "OP" -variabelen er lik summen av tallene. Så returnerer den verdien ved å legge til begge tallene. Ellers returnerer det gjennomsnittet ved å dele summen av tallene med 2. Vi initialiserer to nye variabler og setter verdiene sine. Vi bruker "cout" -uttalelsen for å vise summen. Nå for å oppnå gjennomsnittet av de nødvendige verdiene, bruker vi lambda -funksjonen "gjennomsnitt". Vi har gitt heltallene som argumenter for denne lambda -funksjonen. "Cout" -uttalelsen vil bli brukt til å vise gjennomsnittsverdien. For å avslutte koden, bruker vi “Return 0”.

Eksempel nr. 4

Som standard klarer ikke Lambda -metoder å hente den innrykkede funksjonens variabler. Vi bruker fangstuttalelsen for å få tilgang til disse attributtene. Dette er identisk med å påkalle en metode etter verdi. Når lambda er konstruert i dette tilfellet, blir den opprinnelige verdien tatt. Variabelen som er inkludert i Lambda -argumentet vil bare bli lest på dette tidspunktet; Det kan ikke endres.

Følgende er et eksempel på en enkel lambda -funksjon med fangst etter verdi:

Dermed har lambda -funksjonen tilgjengeligheten til int "n" -variabelen på grunn av innledende "s". Ettersom int “n” ikke vil bli hentet fra lambda -kroppen med mindre vi eliminerer det fra fangstklausulen, vil vi finne en feil.

#inkludere
ved hjelp av navneområdet STD;
int main ()
int initial_s = 389;
auto add_to_s = [initial_s] (int n)
return initial_s + n;
;
int final_s = add_to_s (45);
cout << "389 + 45 = " << final_s;
return 0;

For det første, for input- og utgangsprosesser, vil overskriftsfilen bli inkludert. Sammen med dette standard vil navneområdet bli lagt til. Vi kaller nå hovedfunksjonen (). Innenfor kroppen til hoved () -funksjonen initialiserer vi en variabel “initial_s”. Vi spesifiserer verdien “389” til denne variabelen. Så fanger vi variabelen “initial_s” etter verdien. Derfor har vi brukt lambda -funksjonen til “add_to_s”. Vi vil passere to variabler som parameter til lambda -funksjonen.

Den første parameteren viser variabelen “Initial_s”, og den andre parameteren viser variabelen “N”. Summen vil bli holdt i en variabel "finale_s". Datatypen til denne variabelen er et heltall. Før vi legger til “Return 0” -kommandoen, må vi bruke "cout" -uttalelsen. "Cout" -uttalelsen viser den resulterende verdien.

Konklusjon

Guiden C ++ Lambda Statements har konkludert. Den nye forestillingen i C ++, inline -utførelse, er svært nyttig når vi trenger å kjøre et kort stykke kode. I tillegg kan lambdas erklæres generiske og brukes på alle slags data. Denne artikkelen har fire separate forekomster som vi har implementert fullt ut. Lambda -funksjonen brukes uten noen argumenter i første omgang. Vi gir lambda -metoden en rekke parametere i det andre eksemplet. Tilsvarende har vi brukt Lambda -metodens eksplisitte returtype i det tredje scenariet. Lambda -funksjonen og fangstklausulen har blitt brukt i den siste.