Eksempler på funksjon C++

Eksempler Pa Funksjon C



En C++-klasse som fungerer som en funksjon kalles en funksjoner. Den identiske gamle funksjonskallsyntaksen brukes til å påkalle funksjonene. Vi lager et objekt som overbelaster 'operator()' for å generere en funksjon. Vi kan også si at objektene som kan tolkes som enten en funksjon eller en funksjonspeker kalles funksjoner. Når du modellerer funksjonelle effekter ved å bruke verdiene til parametriske datatyper, er 'funksjoner' ekstremt praktiske. I denne artikkelen vil funksjonskonseptet bli studert i detalj sammen med C++-koder.

Eksempel 1:

'iostream' er header-filen som vi inkluderer her fordi vi må bruke funksjonene som er deklarert i denne header-filen. Headerfilen 'iostream' inneholder en funksjonserklæring. 'Std'-navneområdet legges også til her. Deretter genererer vi en klasse kalt 'FunctorClass'. Under dette skriver vi 'public' som er den offentlige konstruktøren her og plasserer 'operator()'-funksjonen. Deretter plasserer vi en setning som vi ønsker å gjengi på skjermen i 'cout'-setningen.

Etter dette kaller vi «main()»-funksjonen og lager deretter objektet til «FunctorClass» med navnet «my_functor». Her kaller vi 'my_functor()'-funksjonen slik at den viser setningen som vi la til under 'operator()'-funksjonen.







Kode 1:



#include
ved hjelp av navneområde std ;
klasse FunctorClass {
offentlig :
tomrom operatør ( ) ( ) {
cout << 'Operasjonen kalles her' ;
}
} ;
int hoved- ( ) {
FunctorClass my_functor ;
min_funksjonen ( ) ;

komme tilbake 0 ;
}

Produksjon:



Linjen som vi la til i 'operator()'-funksjonen til 'FunctorClass' vises her ved å bruke funksjonsobjektet 'my_functor'.





Eksempel 2:

Vi inkluderer «iostream»-overskriftsfilen her fordi en funksjonserklæring er inneholdt i «iostream»-overskriftsfilen. 'Std'-navneområdet er også satt inn. Deretter lager vi en klasse som heter 'SquareClass'.



Under det skriver vi 'public' som er den offentlige konstruktøren og plasserer 'operator()'-funksjonen til 'int'-datatypen under den. Vi sender 'val'-variabelen til 'int'-datatypen til denne 'operator()'-funksjonen. Denne funksjonen returnerer multiplikasjonsresultatet da vi satte inn 'val * val' i 'return()'-funksjonen under 'operator()'-funksjonen.

Nå kalles 'main()'-funksjonen her. Deretter opprettes objektet her med navnet 's_functor' av klassen 'SquareFunctor'. Deretter bruker vi 'cout' som hjelper til med å gjengi informasjonen. Etter dette kaller vi 'my_functor()'-objektet her som en funksjon, og det returnerer multiplikasjonsresultatet av '5 * 5' ettersom vi la til '5' som parameter mens vi kalte det.

Kode 2:

#include
ved hjelp av navneområde std ;
klasse SquareClass {
offentlig :
int operatør ( ) ( int val ) {
komme tilbake ( val * val ) ;
}
} ;
int hoved- ( ) {
SquareClass s_functor ;
cout << 'Kvadraten av den gitte verdien er' << endl ;
cout << s_function ( 5 ) ;

komme tilbake 0 ;
}

Produksjon:

Vi får utdata etter å ha kalt 'my_functor'-objektet til 'SqaureClass'-klassen som 'my_functor()'-funksjonen og deretter sendt '5'. Vi får '25' som kvadratet av tallet '5'.

Eksempel 3:

Headerfilen 'iostream' er inkludert her fordi den inneholder en funksjonserklæring, og 'std'-navneområdet introduseres etterpå. 'ProductFunctor'-klassen lages deretter. Den offentlige konstruktøren, 'public', skrives under den og 'operator()'-funksjonen til 'int'-datatypen er plassert under den. Vi overstyrer denne funksjonen her og sender to parametere inn i den: 'int var1' og 'int var2'.

Deretter bruker vi 'avkastningen' under dette og multipliserer begge variablene som returnerer multiplikasjonsresultatet av begge tallene 'var1 * var2'. Funksjonen 'main()' kalles så her og vi genererer klasseobjektet med navnet 'P_functor' til klassen 'ProductFunctor'. Deretter initialiserer vi en ny variabel med navnet 'pro_result' og tildeler 'P_functor'-objektet som 'P_functor()'-funksjonen etter å ha kalt det.

Vi sender '28' og '63' som parameter. Dette vil multiplisere begge verdiene og lagre resultatet i 'pro_result'-variabelen som vi skriver ut under denne ved å bruke 'cout' og sende 'pro_result' i den.

Kode 3:

#include
ved hjelp av navneområde std ;
klasse Produktfunksjon {
offentlig :
int operatør ( ) ( int var1, int var2 ) {
komme tilbake var1 * var2 ;
}
} ;
int hoved- ( ) {
ProductFunctor P_functor ;
int prod_result = P_funksjon ( 28 , 63 ) ;
cout << 'Produktet er:' << prod_result << endl ;
komme tilbake 0 ;
}

Produksjon:

Vi får produktet etter å ha kalt 'P_functor'-objektet som 'P_functor()'-funksjonen og sendt verdiene til det. Produktet av disse verdiene er '1764'.

Eksempel 4:

'GreetingFunctorClass' genereres i dette tilfellet. Deretter setter vi inn den 'offentlige' konstruktøren og overstyrer 'operator()'-funksjonen i denne 'offentlige' konstruktøren. Vi skriver «Hei! Jeg er en C++-programmerer her' etter å ha plassert 'cout' under 'operator()'-funksjonen.

Nå og fremover kaller vi 'main()'. Vi lager 'g_functor' her som objektet til 'GreetingFunctorClass' og kaller deretter dette 'g_functor'-objektet som 'g_functor()'-funksjonen. Dette gir resultatet som vi la til i 'operator()'-funksjonen mens vi overstyrte det.

Kode 4:

#include
ved hjelp av navneområde std ;
ved hjelp av navneområde std ;
klasse GreetingFunctorClass {
offentlig :
tomrom operatør ( ) ( ) {
cout << 'Hei! Jeg er en C++-programmerer her' ;
}
} ;
int hoved- ( ) {
GreetingFunctorClass g_functor ;
g_funksjon ( ) ;
komme tilbake 0 ;
}

Produksjon:

Her kan vi kanskje legge merke til at setningen vi la til når vi overstyrte 'operator()'-funksjonen i koden vår, vises her når vi kaller klasseobjektet som en funksjon.

Eksempel 5:

'bits/stdc++.h' er inkludert denne gangen da den inneholder alle nødvendige funksjonserklæringer. Deretter plasseres 'std'-navneområdet her. Klassen vi oppretter her er klassen 'incrementFunctor'. Deretter lager vi en 'privat' konstruktør og initialiserer 'int_num'-variabelen med 'int'-datatypen.

Under denne, den 'offentlige' konstruktøren, plasserer vi 'incrementFunctor' og sender 'int n1' inne i den. Deretter skriver vi 'int_num(n1)' etter å ha plassert ':'. Deretter overstyrer vi funksjonen som er 'operator()'-funksjonen til 'int'-datatypen og erklærer 'int arrOfNum' her. Vi bruker deretter 'retur' og setter inn 'int_num + arrOfNum'. Nå øker dette verdiene til 'arrOfNum', legger til 'int_num'-verdien i dem og returnerer dem her.

Etter å ha påkalt 'main()', initialiserer vi 'arrOfNum' og tildeler forskjellige heltallsverdier her. Deretter initialiseres 'n1'-variabelen der vi legger til 'sizeof'-funksjonen som 'sizeof(arrOfNum)/sizeof(arrOfNum[0])'. Etter dette initialiseres 'additionNumber' med '3'. Nå bruker vi 'transform()'-funksjonen. Denne 'transform()' er det samme som å lage objektet til klassen 'increamentFunctor' og deretter kalle objektet. Etter dette bruker vi 'for'-løkken og 'cout' deretter 'arrOfNum[i]'.

Kode 5:

#include
ved hjelp av navneområde std ;
klasse incrementFunctor
{
privat :
int int_num ;
offentlig :
incrementFunctor ( int n1 ) : int_num ( n1 ) { }
int operatør ( ) ( int arrOfNum ) konst {
komme tilbake int_num + arrOfNum ;
}
} ;
int hoved- ( )
{
int arrOfNum [ ] = { 6 , 3 , 2 , 1 , 9 , 0 , 8 } ;
int n1 = størrelsen av ( arrOfNum ) / størrelsen av ( arrOfNum [ 0 ] ) ;
int tilleggsnummer = 3 ;
forvandle ( arrOfNum, arrOfNum + n1, arrOfNum, incrementFunctor ( tilleggsnummer ) ) ;

til ( int Jeg = 0 ; Jeg < n1 ; Jeg ++ )
cout << arrOfNum [ Jeg ] << ' ' ;
}

Produksjon:

Resultatet av koden vises her der 'incrementFunctor' er 'Functor' som brukes som funksjon.

Eksempel 6:

I denne koden bruker vi den forhåndsdefinerte 'større' funksjonen. Her inkluderer vi fire forskjellige overskriftsfiler slik vi krever dem i koden vår fordi funksjonene eller metodene vi trenger i koden vår er deklarert i dem. Deretter, etter å ha lagt til 'std' og deretter kalt 'main()', initialiserer vi 'myIntegerVector'-vektoren. Vi setter inn noen usorterte verdier i denne vektoren. Under dette bruker vi 'sort'-funksjonen for å sortere disse vektorverdiene.

Når vi bruker denne funksjonen, sorterer den verdiene i stigende rekkefølge. Men vi bruker 'større' her som er den forhåndsdefinerte funksjonen i C++ som gir resultatet av sortering på en synkende måte. Etter dette viser vi de sorterte verdiene ved hjelp av 'for' loop og deretter 'cout'.

Kode 6:

#include
#include
#inkluder
#inkludere
ved hjelp av navneområde std ;

int hoved- ( ) {
vektor < int > myIntegerVector = { 1. 3 , tjueen , 19 , 44 , 32 , 42 , 9 , 6 } ;
sortere ( myIntegerVector. begynne ( ) , myIntegerVector. slutt ( ) , større < int > ( ) ) ;
til ( int vec_num : myIntegerVector ) {
cout << vec_num << '' ;
}
komme tilbake 0 ;
}

Produksjon:

Alle verdiene til vektoren er sortert på en synkende måte ved hjelp av den forhåndsdefinerte funksjonen i C++ som er den 'større' funksjonen, og dens definisjon er tilgjengelig i den 'funksjonelle' header-filen.

Konklusjon

Konseptet med 'functor C++' er dypt utforsket i denne artikkelen. Vi studerte at et objekt kan påkalles som en funksjon for å overbelaste en funksjon kalt «operator()». Dette er kjent som en funksjonær. Offentlig tilgang må gis for at overbelastningen av «operatøren()» skal kunne utnyttes etter hensikten. Vi illustrerte forskjellige eksempler der vi brukte 'funksjonene' og den forhåndsdefinerte 'funksjonen' i koden vår.