Funktions-C++-Beispiele

Funktions C Beispiele



Eine C++-Klasse, die wie eine Funktion funktioniert, wird Funktor genannt. Zum Aufrufen der Funktoren wird die identische alte Funktionsaufrufsyntax verwendet. Wir erstellen ein Objekt, das „operator()“ überlädt, um einen Funktor zu generieren. Wir können auch sagen, dass die Objekte, die entweder als Funktion oder als Funktionszeiger interpretiert werden können, Funktoren genannt werden. Bei der Modellierung der funktionalen Effekte mithilfe der Werte parametrischer Datentypen sind „Funktoren“ äußerst praktisch. In diesem Artikel wird das Funktorkonzept zusammen mit C++-Codes ausführlich untersucht.

Beispiel 1:

Der „iostream“ ist die Header-Datei, die wir hier einschließen, da wir die in dieser Header-Datei deklarierten Funktionen verwenden müssen. Die Header-Datei „iostream“ enthält eine Funktionsdeklaration. Hier wird auch der Namensraum „std“ hinzugefügt. Dann generieren wir eine Klasse namens „FunctorClass“. Darunter geben wir „public“ ein, was hier der öffentliche Konstruktor ist, und platzieren die Funktion „operator()“. Anschließend platzieren wir in der „cout“-Anweisung einen Satz, den wir auf dem Bildschirm darstellen möchten.

Danach rufen wir die Funktion „main()“ auf und erstellen dann das Objekt der „FunctorClass“ mit dem Namen „my_functor“. Hier rufen wir die Funktion „my_functor()“ auf, damit sie die Anweisung anzeigt, die wir unterhalb der Funktion „operator()“ hinzugefügt haben.







Code 1:



#include
verwenden Namensraum std ;
Klasse FunctorClass {
öffentlich :
Leere Operator ( ) ( ) {
cout << „Die Operation wird hier aufgerufen“ ;
}
} ;
int hauptsächlich ( ) {
FunctorClass my_functor ;
my_functor ( ) ;

zurückkehren 0 ;
}

Ausgabe:



Die Zeile, die wir in der Funktion „operator()“ der „FunctorClass“ hinzugefügt haben, wird hier angezeigt, indem wir das Funktorobjekt „my_functor“ verwenden.





Beispiel 2:

Wir fügen hier die Header-Datei „iostream“ ein, da einige Funktionsdeklarationen in der Header-Datei „iostream“ enthalten sind. Der Namensraum „std“ wird ebenfalls eingefügt. Als nächstes erstellen wir eine Klasse mit dem Namen „SquareClass“.



Darunter geben wir „public“ ein, den öffentlichen Konstruktor, und platzieren darunter die Funktion „operator()“ des Datentyps „int“. An diese Funktion „operator()“ übergeben wir die Variable „val“ vom Datentyp „int“. Diese Funktion gibt das Multiplikationsergebnis zurück, da wir „val * val“ in die Funktion „return()“ unterhalb der Funktion „operator()“ eingefügt haben.

Nun wird hier die Funktion „main()“ aufgerufen. Anschließend wird hier das Objekt mit dem Namen „s_functor“ der Klasse „SquareFunctor“ erstellt. Dann verwenden wir den „Cout“, der bei der Darstellung der Informationen hilft. Danach rufen wir hier das „my_functor()“-Objekt wie eine Funktion auf und es gibt das Multiplikationsergebnis von „5 * 5“ zurück, da wir beim Aufruf „5“ als Parameter hinzugefügt haben.

Code 2:

#include
verwenden Namensraum std ;
Klasse SquareClass {
öffentlich :
int Operator ( ) ( int val ) {
zurückkehren ( val * val ) ;
}
} ;
int hauptsächlich ( ) {
SquareClass s_functor ;
cout << „Das Quadrat des gegebenen Wertes ist“ << endl ;
cout << s_function ( 5 ) ;

zurückkehren 0 ;
}

Ausgabe:

Wir erhalten die Ausgabe, nachdem wir das „my_functor“-Objekt der „SqaureClass“-Klasse wie die „my_functor()“-Funktion aufgerufen und dann „5“ übergeben haben. Wir erhalten „25“ als Quadrat der Zahl „5“.

Beispiel 3:

Die Header-Datei „iostream“ ist hier enthalten, da sie eine Funktionsdeklaration enthält, und der Namespace „std“ wird anschließend eingeführt. Anschließend wird die Klasse „ProductFunctor“ erstellt. Darunter wird der öffentliche Konstruktor „public“ typisiert und darunter die Funktion „operator()“ vom Datentyp „int“ positioniert. Wir überschreiben diese Funktion hier und übergeben ihr zwei Parameter: „int var1“ und „int var2“.

Dann nutzen wir die „return“ darunter und multiplizieren beide Variablen, was das Multiplikationsergebnis beider Zahlen „var1 * var2“ zurückgibt. Hier wird dann die Funktion „main()“ aufgerufen und wir generieren das Klassenobjekt mit dem Namen „P_functor“ der Klasse „ProductFunctor“. Anschließend initialisieren wir eine neue Variable mit dem Namen „pro_result“ und weisen das „P_functor“-Objekt nach dem Aufruf als „P_functor()“-Funktion zu.

Als Parameter übergeben wir „28“ und „63“. Dadurch werden beide Werte multipliziert und das Ergebnis in der Variablen „pro_result“ gespeichert, die wir darunter drucken, indem wir „cout“ verwenden und darin „pro_result“ übergeben.

Code 3:

#include
verwenden Namensraum std ;
Klasse ProductFunctor {
öffentlich :
int Operator ( ) ( int var1, int var2 ) {
zurückkehren var1 * var2 ;
}
} ;
int hauptsächlich ( ) {
ProductFunctor P_functor ;
int prod_result = P_Funktion ( 28 , 63 ) ;
cout << „Das Produkt ist:“ << prod_result << endl ;
zurückkehren 0 ;
}

Ausgabe:

Wir erhalten das Produkt, nachdem wir das „P_functor“-Objekt als „P_functor()“-Funktion aufgerufen und ihm die Werte übergeben haben. Das Produkt dieser Werte ist „1764“.

Beispiel 4:

In dieser Instanz wird die „GreetingFunctorClass“ generiert. Dann fügen wir den „öffentlichen“ Konstruktor ein und überschreiben die Funktion „operator()“ in diesem „öffentlichen“ Konstruktor. Wir tippen „Hallo! Ich bin hier ein C++-Programmierer“, nachdem Sie „cout“ unter der Funktion „operator()“ platziert haben.

Von nun an rufen wir „main()“ auf. Wir erstellen hier den „g_functor“ als Objekt der „GreetingFunctorClass“ und nennen dieses „g_functor“-Objekt dann als „g_functor()“-Funktion. Dies ergibt das Ergebnis, das wir in der Funktion „operator()“ hinzugefügt haben, während wir sie überschrieben haben.

Code 4:

#include
verwenden Namensraum std ;
verwenden Namensraum std ;
Klasse GreetingFunctorClass {
öffentlich :
Leere Operator ( ) ( ) {
cout << „Hallo! Ich bin hier ein C++-Programmierer.“ ;
}
} ;
int hauptsächlich ( ) {
GreetingFunctorClass g_functor ;
g_function ( ) ;
zurückkehren 0 ;
}

Ausgabe:

Hier fällt uns möglicherweise auf, dass die Anweisung, die wir hinzugefügt haben, als wir die Funktion „operator()“ in unserem Code überschrieben haben, hier angezeigt wird, da wir das Klassenobjekt wie eine Funktion aufrufen.

Beispiel 5:

Diesmal ist „bits/stdc++.h“ enthalten, da es alle notwendigen Funktionsdeklarationen enthält. Dann wird der Namespace „std“ hier platziert. Die Klasse, die wir hier erstellen, ist die Klasse „incrementFunctor“. Anschließend erstellen wir einen „privaten“ Konstruktor und initialisieren die Variable „int_num“ mit dem Datentyp „int“.

Darunter, dem „öffentlichen“ Konstruktor, platzieren wir den „incrementFunctor“ und übergeben darin „int n1“. Dann geben wir „int_num(n1)“ ein, nachdem wir das „:“ platziert haben. Dann überschreiben wir die Funktion, die die Funktion „operator()“ des Datentyps „int“ ist, und deklarieren hier „int arrOfNum“. Wir nutzen dann „return“ und fügen „int_num + arrOfNum“ ein. Dies erhöht nun die Werte von „arrOfNum“, fügt ihnen den Wert „int_num“ hinzu und gibt sie hier zurück.

Nach dem Aufruf von „main()“ initialisieren wir „arrOfNum“ und weisen hier verschiedene Ganzzahlwerte zu. Dann wird die Variable „n1“ initialisiert, wobei wir die Funktion „sizeof“ wie „sizeof(arrOfNum)/sizeof(arrOfNum[0])“ hinzufügen. Danach wird die „additionNumber“ mit „3“ initialisiert. Jetzt nutzen wir die Funktion „transform()“. Dieses „transform()“ ist dasselbe wie das Erstellen des Objekts der Klasse „increamentFunctor“ und das anschließende Aufrufen seines Objekts. Danach verwenden wir die „for“-Schleife und „couten“ dann „arrOfNum[i]“.

Code 5:

#include
verwenden Namensraum std ;
Klasse inkrementFunctor
{
Privat :
int int_num ;
öffentlich :
inkrementFunctor ( int n1 ) : int_num ( n1 ) { }
int Operator ( ) ( int arrOfNum ) const {
zurückkehren int_num + arrOfNum ;
}
} ;
int hauptsächlich ( )
{
int arrOfNum [ ] = { 6 , 3 , 2 , 1 , 9 , 0 , 8 } ;
int n1 = Größe von ( arrOfNum ) / Größe von ( arrOfNum [ 0 ] ) ;
int Zusatznummer = 3 ;
verwandeln ( arrOfNum, arrOfNum + n1, arrOfNum, incrementFunctor ( Zusatznummer ) ) ;

für ( int ich = 0 ; ich < n1 ; ich ++ )
cout << arrOfNum [ ich ] << ' ' ;
}

Ausgabe:

Das Ergebnis des Codes wird hier gezeigt, wobei „incrementFunctor“ der „Functor“ ist, der als Funktion verwendet wird.

Beispiel 6:

In diesem Code verwenden wir den vordefinierten „größeren“ Funktor. Hier fügen wir vier verschiedene Header-Dateien ein, da wir sie in unserem Code benötigen, da die Funktionen oder Methoden, die wir in unserem Code benötigen, in ihnen deklariert sind. Dann, nachdem wir „std“ hinzugefügt und dann „main()“ aufgerufen haben, initialisieren wir den Vektor „myIntegerVector“. Wir fügen einige unsortierte Werte in diesen Vektor ein. Darunter wenden wir die Funktion „Sortieren“ an, um diese Vektorwerte zu sortieren.

Wenn wir diese Funktion verwenden, werden die Werte in aufsteigender Reihenfolge sortiert. Aber wir verwenden hier die „größere“ Funktion, die in C++ vordefiniert ist und das Ergebnis einer absteigenden Sortierung liefert. Anschließend zeigen wir die sortierten Werte mithilfe der „for“-Schleife und anschließend „cout“ an.

Code 6:

#include
#include
#include
#include
verwenden Namensraum std ;

int hauptsächlich ( ) {
Vektor < int > myIntegerVector = { 13 , einundzwanzig , 19 , 44 , 32 , 42 , 9 , 6 } ;
Sortieren ( myIntegerVector. beginnen ( ) , myIntegerVector. Ende ( ) , größer < int > ( ) ) ;
für ( int vec_num : myIntegerVector ) {
cout << vec_num << „“ ;
}
zurückkehren 0 ;
}

Ausgabe:

Alle Werte des Vektors werden mit Hilfe des in C++ vordefinierten Funktors, der der „größere“ Funktor ist, absteigend sortiert und seine Definition ist in der „funktionalen“ Header-Datei verfügbar.

Abschluss

Das Konzept des „Funktors C++“ wird in diesem Artikel eingehend untersucht. Wir haben untersucht, dass ein Objekt als Funktion aufgerufen werden kann, um eine Funktion namens „operator()“ zu überladen. Dies wird als Funktor bezeichnet. Damit die Überladung des „operator()“ bestimmungsgemäß genutzt werden kann, muss ein öffentlicher Zugriff bereitgestellt werden. Wir haben verschiedene Beispiele veranschaulicht, in denen wir die „Funktoren“ und den vordefinierten „Funktor“ in unserem Code verwendet haben.