Funkcijos C++ pavyzdžiai

Funkcijos C Pavyzdziai



C++ klasė, kuri veikia kaip funkcija, vadinama funktoriumi. Funktoriams iškviesti naudojama identiška senoji funkcijos iškvietimo sintaksė. Sukuriame objektą, kuris perkrauna „operatorių ()“, kad sugeneruotume funkcionorių. Taip pat galime pasakyti, kad objektai, kurie gali būti interpretuojami kaip funkcija arba funkcijos rodyklė, vadinami funkcijomis. Modeliuojant funkcinius efektus naudojant parametrinių duomenų tipų reikšmes, „funktoriai“ yra itin patogūs. Šiame straipsnyje bus išsamiai išnagrinėta funktoriaus koncepcija kartu su C++ kodais.

1 pavyzdys:

„iostream“ yra antraštės failas, kurį įtraukiame čia, nes turime naudoti šiame antraštės faile nurodytas funkcijas. „iostream“ antraštės faile yra funkcijos deklaracija. Čia taip pat pridedama „std“ vardų erdvė. Tada sugeneruojame klasę pavadinimu „FunctorClass“. Po juo įvedame „public“, kuris yra viešasis konstruktorius, ir įdedame funkciją „operatorius ()“. Tada mes įdedame sakinį, kurį norime pateikti ekrane, sakinyje „cout“.

Po to iškviečiame funkciją „main()“ ir sukuriame „FunctorClass“ objektą pavadinimu „my_functor“. Čia mes vadiname funkciją „my_functor()“, kad būtų rodomas teiginys, kurį įtraukėme po funkcija „operatorius ()“.







1 kodas:



#include
naudojant vardų erdvė std ;
klasė Funktorių klasė {
viešas :
tuštuma operatorius ( ) ( ) {
cout << „Operacija vadinama čia“ ;
}
} ;
tarpt pagrindinis ( ) {
FunctorClass my_funktorius ;
mano_funkc ( ) ;

grąžinti 0 ;
}

Išvestis:



Eilute, kurią įtraukėme į „FunctorClass“ funkciją „operator()“, čia rodoma naudojant „my_functor“ functor objektą.





2 pavyzdys:

Čia įtraukiame „iostream“ antraštės failą, nes kai kurios funkcijos deklaracijos yra „iostream“ antraštės faile. Taip pat įterpiama vardų sritis „std“. Tada sukuriame klasę pavadinimu „SquareClass“.



Žemiau įrašome „public“, kuris yra viešasis konstruktorius, ir po juo pateikiame „int“ duomenų tipo funkciją „operatorius()“. Šiai funkcijai „operator()“ perduodame „int“ duomenų tipo „val“ kintamąjį. Ši funkcija grąžina daugybos rezultatą, nes į „return()“ funkciją po funkcija „operator()“ įterpėme „val * val“.

Dabar čia iškviečiama funkcija „main ()“. Tada čia sukuriamas objektas „SquareFunctor“ klasės pavadinimu „s_functor“. Tada mes naudojame „cout“, kuris padeda pateikti informaciją. Po to mes iškviečiame objektą „my_functor()“ kaip funkciją ir jis grąžina daugybos rezultatą „5 * 5“, nes jį iškviesdami kaip parametrą įtraukėme „5“.

2 kodas:

#include
naudojant vardų erdvė std ;
klasė SquareClass {
viešas :
tarpt operatorius ( ) ( tarpt val ) {
grąžinti ( val * val ) ;
}
} ;
tarpt pagrindinis ( ) {
„SquareClass s_functor“. ;
cout << 'Suteiktos vertės kvadratas yra' << endl ;
cout << s_funkcija ( 5 ) ;

grąžinti 0 ;
}

Išvestis:

Išvestį gauname iškvietę „SqaureClass“ klasės objektą „my_functor“, pvz., funkciją „my_functor()“ ir išdavus „5“. Mes gauname „25“ kaip skaičiaus „5“ kvadratą.

3 pavyzdys:

„iostream“ antraštės failas įtrauktas čia, nes jame yra funkcijos deklaracija, o „std“ vardų sritis įvedama vėliau. Tada sukuriama „ProductFunctor“ klasė. Po juo įvedamas viešasis konstruktorius „public“, o po juo yra „int“ duomenų tipo funkcija „operatorius()“. Čia nepaisome šios funkcijos ir perduodame į ją du parametrus: „int var1“ ir „int var2“.

Tada mes naudojame žemiau esantį „grąžą“ ir padauginame abu kintamuosius, kurie grąžina abiejų skaičių daugybos rezultatą „var1 * var2“. Tada čia iškviečiama funkcija „main()“ ir mes sugeneruojame klasės objektą „ProductFunctor“ klasės pavadinimu „P_functor“. Tada inicijuojame naują kintamąjį pavadinimu „pro_result“ ir iškvietę objektą „P_functor“ priskiriame funkcijai „P_functor()“.

Kaip parametrą perduodame „28“ ir „63“. Tai padaugins abi reikšmes ir išsaugos rezultatą „pro_result“ kintamajame, kurį spausdiname po juo naudodami „cout“ ir jame perduodame „pro_result“.

3 kodas:

#include
naudojant vardų erdvė std ;
klasė ProductFunctor {
viešas :
tarpt operatorius ( ) ( tarpt var1, tarpt var2 ) {
grąžinti var1 * var2 ;
}
} ;
tarpt pagrindinis ( ) {
ProductFunctor P_functor ;
tarpt prod_result = P_funkcija ( 28 , 63 ) ;
cout << 'Produktas yra:' << prod_result << endl ;
grąžinti 0 ;
}

Išvestis:

Produktą gauname iškvietę objektą „P_functor“ kaip funkciją „P_functor()“ ir perdavus jam reikšmes. Šių verčių sandauga yra „1764“.

4 pavyzdys:

Šiuo atveju sugeneruojama „GreetingFunctorClass“. Tada įterpiame „viešąjį“ konstruktorių ir nepaisome „operatoriaus ()“ funkcijos šiame „viešajame“ konstruktoriuje. Rašome „Sveiki! Aš esu C++ programuotojas“, po funkcija „operatorius ()“ įdėjęs „cout“.

Dabar mes vadiname „pagrindinį ()“. Čia sukuriame „g_functor“ kaip „GreetingFunctorClass“ objektą ir tada vadiname šį objektą „g_functor“ kaip funkciją „g_functor()“. Tai suteikia rezultatą, kurį įtraukėme į funkciją „operatorius ()“, ją nepaisydami.

4 kodas:

#include
naudojant vardų erdvė std ;
naudojant vardų erdvė std ;
klasė SveikinimaiFunctorClass {
viešas :
tuštuma operatorius ( ) ( ) {
cout << 'Sveiki! Aš čia esu C++ programuotojas' ;
}
} ;
tarpt pagrindinis ( ) {
SveikinimaiFunctorClass g_functor ;
g_funkcija ( ) ;
grąžinti 0 ;
}

Išvestis:

Čia galime pastebėti, kad teiginys, kurį įtraukėme, kai savo kode pakeitėme funkciją „operator()“, rodomas čia, nes klasės objektą vadiname kaip funkcija.

5 pavyzdys:

Šį kartą įtrauktas „bits/stdc++.h“, nes jame yra visos būtinos funkcijų deklaracijos. Tada čia patalpinama „std“ vardų sritis. Klasė, kurią čia sukuriame, yra „incrementFunctor“ klasė. Tada sukuriame „privatų“ konstruktorių ir inicijuojame „int_num“ kintamąjį naudodami „int“ duomenų tipą.

Po šiuo, „viešuoju“ konstruktoriumi, įdedame „incrementFunctor“ ir perduodame jo viduje „int n1“. Tada įvedę „:“ įvedame „int_num(n1)“. Tada nepaisome funkcijos, kuri yra „int“ duomenų tipo „operator()“ funkcija, ir čia paskelbiame „int arrOfNum“. Tada naudojame „return“ ir įterpiame „int_num + arrOfNum“. Dabar tai padidina „arrOfNum“ reikšmes, prideda jas „int_num“ reikšmę ir grąžina jas čia.

Iškvietę „main()“, inicijuojame „arrOfNum“ ir čia priskiriame skirtingas sveikųjų skaičių reikšmes. Tada „n1“ kintamasis inicijuojamas, kai pridedame funkciją „sizeof“, pvz., „sizeof(arrOfNum)/sizeof(arrOfNum[0])“. Po to „additionNumber“ inicijuojamas „3“. Dabar mes naudojame funkciją „transform ()“. Šis 'transform ()' yra tas pats, kas sukurti 'increamentFunctor' klasės objektą ir tada iškviesti jo objektą. Po to mes naudojame „for“ kilpą, o tada „išskaitome“ „arrOfNum[i]“.

5 kodas:

#include
naudojant vardų erdvė std ;
klasė incrementFunctor
{
privatus :
tarpt int_num ;
viešas :
incrementFunctor ( tarpt n1 ) : int_num ( n1 ) { }
tarpt operatorius ( ) ( tarpt arrOfNum ) konst {
grąžinti int_num + arrOfNum ;
}
} ;
tarpt pagrindinis ( )
{
tarpt arrOfNum [ ] = { 6 , 3 , 2 , 1 , 9 , 0 , 8 } ;
tarpt n1 = dydis ( arrOfNum ) / dydis ( arrOfNum [ 0 ] ) ;
tarpt papildymo numeris = 3 ;
transformuoti ( arrOfNum, arrOfNum + n1, arrOfNum, incrementFunctor ( papildymo numeris ) ) ;

dėl ( tarpt i = 0 ; i < n1 ; i ++ )
cout << arrOfNum [ i ] << ' ' ;
}

Išvestis:

Čia rodomas kodo rezultatas, kuriame „incrementFunctor“ yra „funkorius“, kuris naudojamas kaip funkcija.

6 pavyzdys:

Šiame kode mes naudojame iš anksto nustatytą „didesnįjį“ veiksnį. Čia įtraukiame keturis skirtingus antraštės failus, kaip mums reikia mūsų kode, nes juose deklaruojamos funkcijos arba metodai, kurių mums reikia mūsų kode. Tada, pridėję „std“ ir iškvietę „main()“, inicijuojame „myIntegerVector“ vektorių. Į šį vektorių įterpiame keletą nerūšiuotų reikšmių. Žemiau mes taikome funkciją „rūšiuoti“, kad surūšiuotume šias vektorines reikšmes.

Kai naudojame šią funkciją, ji rūšiuoja reikšmes didėjančia tvarka. Tačiau mes naudojame „didesnįjį“, kuris yra iš anksto nustatyta C++ funkcija, kuri suteikia rūšiavimo mažėjančia tvarka rezultatą. Po to rodome surūšiuotas reikšmes naudodami kilpą „for“ ir „cout“.

6 kodas:

#include
#include
#include
#include
naudojant vardų erdvė std ;

tarpt pagrindinis ( ) {
vektorius < tarpt > myIntegerVector = { 13 , dvidešimt vienas , 19 , 44 , 32 , 42 , 9 , 6 } ;
rūšiuoti ( myIntegerVector. pradėti ( ) , myIntegerVector. galas ( ) , didesnis < tarpt > ( ) ) ;
dėl ( tarpt vec_num : myIntegerVector ) {
cout << vec_num << '' ;
}
grąžinti 0 ;
}

Išvestis:

Visos vektoriaus reikšmės rūšiuojamos mažėjančia tvarka naudojant C++ iš anksto nustatytą funktorių, kuris yra „didesnis“ funkcinis veiksnys, o jo apibrėžimą galima rasti „funkcinėje“ antraštės faile.

Išvada

Šiame straipsnyje išsamiai išnagrinėta „funktoriaus C++“ sąvoka. Ištyrėme, kad objektas gali būti iškviestas kaip funkcija, norint perkrauti funkciją, vadinamą „operator()“. Tai žinoma kaip funktorius. Turi būti suteikta vieša prieiga, kad „operatoriaus ()“ perkrova būtų naudojama pagal paskirtį. Mes iliustravome skirtingus pavyzdžius, kuriuose savo kode panaudojome „funktorius“ ir iš anksto apibrėžtą „funktorių“.