Παραδείγματα συνάρτησης C++

Paradeigmata Synarteses C



Μια κλάση C++ που λειτουργεί σαν συνάρτηση ονομάζεται συντελεστής. Η πανομοιότυπη παλιά σύνταξη κλήσης συνάρτησης χρησιμοποιείται για την κλήση των συντελεστών. Δημιουργούμε ένα αντικείμενο που υπερφορτώνει το 'operator()' για να δημιουργήσει έναν συνάρτηση. Μπορούμε επίσης να πούμε ότι τα αντικείμενα που μπορούν να ερμηνευθούν είτε ως συνάρτηση είτε ως δείκτης συνάρτησης ονομάζονται συντελεστές. Κατά τη μοντελοποίηση των λειτουργικών εφέ χρησιμοποιώντας τις τιμές των παραμετρικών τύπων δεδομένων, οι «συναρτητές» είναι εξαιρετικά βολικοί. Σε αυτό το άρθρο, η έννοια του συντελεστή θα μελετηθεί λεπτομερώς μαζί με τους κωδικούς C++.

Παράδειγμα 1:

Το 'iostream' είναι το αρχείο κεφαλίδας που συμπεριλαμβάνουμε εδώ επειδή πρέπει να χρησιμοποιήσουμε τις συναρτήσεις που δηλώνονται σε αυτό το αρχείο κεφαλίδας. Το αρχείο κεφαλίδας 'iostream' περιέχει μια δήλωση συνάρτησης. Ο χώρος ονομάτων 'std' προστίθεται επίσης εδώ. Στη συνέχεια, δημιουργούμε μια κλάση που ονομάζεται 'FunctorClass'. Κάτω από αυτό, πληκτρολογούμε 'public' που είναι ο δημόσιος κατασκευαστής εδώ και τοποθετούμε τη συνάρτηση 'operator()'. Στη συνέχεια, τοποθετούμε μια πρόταση που θέλουμε να αποδώσουμε στην οθόνη στη δήλωση «cout».

Μετά από αυτό, καλούμε τη συνάρτηση 'main()' και στη συνέχεια δημιουργούμε το αντικείμενο της 'FunctorClass' με το όνομα 'my_functor'. Εδώ, καλούμε τη συνάρτηση 'my_functor()' έτσι ώστε να εμφανίζει τη δήλωση που προσθέσαμε κάτω από τη συνάρτηση 'operator()'.







Κωδικός 1:



#include
χρησιμοποιώντας χώρο ονομάτων std ;
τάξη FunctorClass {
δημόσιο :
κενός χειριστής ( ) ( ) {
cout << 'Η επιχείρηση καλείται εδώ' ;
}
} ;
ενθ κύριος ( ) {
FunctorClass my_functor ;
my_functor ( ) ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:



Η γραμμή που προσθέσαμε στη συνάρτηση 'operator()' της 'FunctorClass' εμφανίζεται εδώ χρησιμοποιώντας το αντικείμενο συνάρτησης 'my_functor'.





Παράδειγμα 2:

Περιλαμβάνουμε το αρχείο κεφαλίδας 'iostream' εδώ επειδή κάποια δήλωση συνάρτησης περιέχεται στο αρχείο κεφαλίδας 'iostream'. Εισάγεται επίσης ο χώρος ονομάτων 'std'. Στη συνέχεια, δημιουργούμε μια κλάση με το όνομα 'SquareClass'.



Κάτω από αυτό, πληκτρολογούμε 'public' που είναι ο δημόσιος κατασκευαστής και τοποθετούμε τη συνάρτηση 'operator()' του τύπου δεδομένων 'int' κάτω από αυτήν. Περνάμε τη μεταβλητή “val” του τύπου δεδομένων “int” σε αυτή τη συνάρτηση “operator()”. Αυτή η συνάρτηση επιστρέφει το αποτέλεσμα πολλαπλασιασμού καθώς εισάγαμε το 'val * val' στη συνάρτηση 'return()' κάτω από τη συνάρτηση 'operator()'.

Τώρα, η συνάρτηση 'main()' καλείται εδώ. Στη συνέχεια, το αντικείμενο δημιουργείται εδώ με το όνομα 's_functor' της κλάσης 'SquareFunctor'. Στη συνέχεια, χρησιμοποιούμε το «cout» που βοηθά στην απόδοση των πληροφοριών. Μετά από αυτό, καλούμε το αντικείμενο 'my_functor()' εδώ σαν συνάρτηση και επιστρέφει το αποτέλεσμα πολλαπλασιασμού του '5 * 5' καθώς προσθέσαμε το '5' ως παράμετρο ενώ το καλούμε.

Κωδικός 2:

#include
χρησιμοποιώντας χώρο ονομάτων std ;
τάξη SquareClass {
δημόσιο :
ενθ χειριστής ( ) ( ενθ val ) {
ΕΠΙΣΤΡΟΦΗ ( val * val ) ;
}
} ;
ενθ κύριος ( ) {
SquareClass s_functor ;
cout << 'Το τετράγωνο της δεδομένης τιμής είναι ' << endl ;
cout << s_function ( 5 ) ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Λαμβάνουμε την έξοδο αφού καλέσουμε το αντικείμενο 'my_functor' της κλάσης 'SqaureClass', όπως τη συνάρτηση 'my_functor()' και μετά περάσουμε το '5'. Παίρνουμε το '25' ως το τετράγωνο του αριθμού '5'.

Παράδειγμα 3:

Το αρχείο κεφαλίδας 'iostream' περιλαμβάνεται εδώ επειδή περιέχει μια δήλωση συνάρτησης και στη συνέχεια εισάγεται ο χώρος ονομάτων 'std'. Στη συνέχεια δημιουργείται η κλάση «ProductFunctor». Ο δημόσιος κατασκευαστής, 'public', πληκτρολογείται από κάτω του και η συνάρτηση 'operator()' του τύπου δεδομένων 'int' βρίσκεται κάτω από αυτόν. Παρακάμπτουμε αυτήν τη συνάρτηση εδώ και περνάμε δύο παραμέτρους σε αυτήν: 'int var1' και 'int var2'.

Στη συνέχεια, χρησιμοποιούμε το 'return' κάτω από αυτό και πολλαπλασιάζουμε και τις δύο μεταβλητές που επιστρέφουν το αποτέλεσμα πολλαπλασιασμού και των δύο αριθμών 'var1 * var2'. Στη συνέχεια καλείται εδώ η συνάρτηση 'main()' και δημιουργούμε το αντικείμενο κλάσης με το όνομα 'P_functor' της κλάσης 'ProductFunctor'. Στη συνέχεια, αρχικοποιούμε μια νέα μεταβλητή με το όνομα 'pro_result' και εκχωρούμε το αντικείμενο 'P_functor' ως συνάρτηση 'P_functor()' αφού το καλέσουμε.

Περνάμε το '28' και το '63' ως παράμετρο. Αυτό θα πολλαπλασιάσει και τις δύο τιμές και θα αποθηκεύσει το αποτέλεσμα στη μεταβλητή 'pro_result' που εκτυπώνουμε κάτω από αυτήν χρησιμοποιώντας το 'cout' και περνώντας το 'pro_result' σε αυτήν.

Κωδικός 3:

#include
χρησιμοποιώντας χώρο ονομάτων std ;
τάξη ProductFunctor {
δημόσιο :
ενθ χειριστής ( ) ( ενθ var1, ενθ var2 ) {
ΕΠΙΣΤΡΟΦΗ var1 * var2 ;
}
} ;
ενθ κύριος ( ) {
ProductFunctor P_functor ;
ενθ prod_result = P_function ( 28 , 63 ) ;
cout << 'Το προϊόν είναι:' << prod_result << endl ;
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Λαμβάνουμε το προϊόν αφού καλέσουμε το αντικείμενο 'P_functor' ως συνάρτηση 'P_functor()' και περάσουμε τις τιμές σε αυτό. Το γινόμενο αυτών των τιμών είναι '1764'.

Παράδειγμα 4:

Το 'GreetingFunctorClass' δημιουργείται σε αυτήν την περίπτωση. Στη συνέχεια, εισάγουμε τον κατασκευαστή 'δημόσιο' και παρακάμπτουμε τη συνάρτηση 'τελεστής()' σε αυτόν τον κατασκευαστή 'δημόσιο'. Πληκτρολογούμε «Γεια! Είμαι προγραμματιστής C++ εδώ» αφού τοποθετήσω το «cout» κάτω από τη συνάρτηση «operator()».

Τώρα και μετά, καλούμε το 'main()'. Δημιουργούμε το 'g_functor' εδώ ως αντικείμενο της 'GreetingFunctorClass' και στη συνέχεια καλούμε αυτό το αντικείμενο 'g_functor' ως συνάρτηση 'g_functor()'. Αυτό δίνει το αποτέλεσμα που προσθέσαμε στη συνάρτηση “operator()” ενώ την παρακάμψαμε.

Κωδικός 4:

#include
χρησιμοποιώντας χώρο ονομάτων std ;
χρησιμοποιώντας χώρο ονομάτων std ;
τάξη GreetingFunctorClass {
δημόσιο :
κενός χειριστής ( ) ( ) {
cout << 'Γεια σας! Είμαι προγραμματιστής C++ εδώ' ;
}
} ;
ενθ κύριος ( ) {
GreetingFunctorClass g_functor ;
g_function ( ) ;
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Εδώ, μπορεί να παρατηρήσουμε ότι η δήλωση που προσθέσαμε όταν παρακάμψαμε τη συνάρτηση 'operator()' στον κώδικά μας εμφανίζεται εδώ καθώς καλούμε το αντικείμενο κλάσης σαν συνάρτηση.

Παράδειγμα 5:

Το 'bits/stdc++.h' περιλαμβάνεται αυτή τη φορά καθώς περιέχει όλες τις απαραίτητες δηλώσεις συναρτήσεων. Στη συνέχεια, ο χώρος ονομάτων 'std' τοποθετείται εδώ. Η κλάση που δημιουργούμε εδώ είναι η κλάση 'incrementFunctor'. Στη συνέχεια, δημιουργούμε έναν κατασκευαστή «private» και αρχικοποιούμε τη μεταβλητή «int_num» με τον τύπο δεδομένων «int».

Κάτω από αυτό, τον «δημόσιο» κατασκευαστή, τοποθετούμε το «incrementFunctor» και περνάμε το «int n1» μέσα του. Στη συνέχεια, πληκτρολογούμε 'int_num(n1)' αφού τοποθετήσουμε το ':'. Στη συνέχεια, παρακάμπτουμε τη συνάρτηση που είναι η συνάρτηση «operator()» του τύπου δεδομένων «int» και δηλώνουμε εδώ «int arrOfNum». Στη συνέχεια χρησιμοποιούμε το 'return' και εισάγουμε 'int_num + arrOfNum'. Τώρα, αυτό αυξάνει τις τιμές του 'arrOfNum', προσθέτει την τιμή 'int_num' σε αυτές και τις επιστρέφει εδώ.

Αφού καλέσουμε την 'main()', αρχικοποιούμε το 'arrOfNum' και εκχωρούμε διαφορετικές ακέραιες τιμές εδώ. Στη συνέχεια, αρχικοποιείται η μεταβλητή “n1” όπου προσθέτουμε τη συνάρτηση “sizeof” όπως “sizeof(arrOfNum)/sizeof(arrOfNum[0])”. Μετά από αυτό, το 'additionNumber' αρχικοποιείται με '3'. Τώρα, χρησιμοποιούμε τη συνάρτηση 'transform()'. Αυτό το 'transform()' είναι το ίδιο με τη δημιουργία του αντικειμένου της κλάσης 'increamentFunctor' και μετά την κλήση του αντικειμένου του. Μετά από αυτό, χρησιμοποιούμε τον βρόχο 'for' και μετά 'cout' το 'arrOfNum[i]'.

Κωδικός 5:

#include
χρησιμοποιώντας χώρο ονομάτων std ;
τάξη incrementFunctor
{
ιδιωτικός :
ενθ int_num ;
δημόσιο :
incrementFunctor ( ενθ n1 ) : int_num ( n1 ) { }
ενθ χειριστής ( ) ( ενθ arrOfNum ) συνθ {
ΕΠΙΣΤΡΟΦΗ int_num + arrOfNum ;
}
} ;
ενθ κύριος ( )
{
ενθ arrOfNum [ ] = { 6 , 3 , 2 , 1 , 9 , 0 , 8 } ;
ενθ n1 = μέγεθος του ( arrOfNum ) / μέγεθος του ( arrOfNum [ 0 ] ) ;
ενθ αριθμός προσθήκης = 3 ;
μεταμορφώνω ( arrOfNum, arrOfNum + n1, arrOfNum, incrementFunctor ( αριθμός προσθήκης ) ) ;

Για ( ενθ Εγώ = 0 ; Εγώ < n1 ; Εγώ ++ )
cout << arrOfNum [ Εγώ ] << '' ;
}

Παραγωγή:

Το αποτέλεσμα του κώδικα εμφανίζεται εδώ στο οποίο το 'incrementFunctor' είναι το 'Functor' που χρησιμοποιείται ως συνάρτηση.

Παράδειγμα 6:

Σε αυτόν τον κώδικα, χρησιμοποιούμε τον προκαθορισμένο συντελεστή 'μεγαλύτερο'. Εδώ, συμπεριλαμβάνουμε τέσσερα διαφορετικά αρχεία κεφαλίδας όπως τα απαιτούμε στον κώδικά μας, επειδή οι συναρτήσεις ή οι μέθοδοι που χρειαζόμαστε στον κώδικά μας δηλώνονται σε αυτά. Στη συνέχεια, αφού προσθέσουμε το 'std' και στη συνέχεια καλέσουμε το 'main()', αρχικοποιούμε το διάνυσμα 'myIntegerVector'. Εισάγουμε κάποιες μη ταξινομημένες τιμές σε αυτό το διάνυσμα. Κάτω από αυτό, εφαρμόζουμε τη συνάρτηση 'ταξινόμηση' για να ταξινομήσουμε αυτές τις διανυσματικές τιμές.

Όταν χρησιμοποιούμε αυτή τη συνάρτηση, ταξινομεί τις τιμές σε αύξουσα σειρά. Χρησιμοποιούμε όμως εδώ το «μεγαλύτερο» που είναι η προκαθορισμένη συνάρτηση στη C++ που δίνει το αποτέλεσμα της ταξινόμησης με φθίνουσα τρόπο. Μετά από αυτό, εμφανίζουμε τις ταξινομημένες τιμές με τη βοήθεια του βρόχου «for» και μετά «cout».

Κωδικός 6:

#include
#include <αλγόριθμος>
#include <διάνυσμα>
#include
χρησιμοποιώντας χώρο ονομάτων std ;

ενθ κύριος ( ) {
διάνυσμα < ενθ > myIntegerVector = { 13 , είκοσι ένα , 19 , 44 , 32 , 42 , 9 , 6 } ;
είδος ( myIntegerVector. αρχίζουν ( ) , myIntegerVector. τέλος ( ) , μεγαλύτερη < ενθ > ( ) ) ;
Για ( ενθ vec_num : myIntegerVector ) {
cout << vec_num << '' ;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Όλες οι τιμές του διανύσματος ταξινομούνται φθίνουσας μορφής με τη βοήθεια του προκαθορισμένου συντελεστή στη C++ που είναι ο «μεγαλύτερος» συντελεστής και ο ορισμός του είναι διαθέσιμος στο «λειτουργικό» αρχείο κεφαλίδας.

συμπέρασμα

Η έννοια του 'συναρτητή C++' διερευνάται σε βάθος σε αυτό το άρθρο. Μελετήσαμε ότι ένα αντικείμενο μπορεί να κληθεί ως συνάρτηση για την υπερφόρτωση μιας συνάρτησης που ονομάζεται 'operator()'. Αυτό είναι γνωστό ως συντελεστής. Πρέπει να παρέχεται δημόσια πρόσβαση για να χρησιμοποιηθεί η υπερφόρτωση του «τελεστή()» όπως προβλέπεται. Εικονογραφήσαμε διάφορα παραδείγματα στα οποία χρησιμοποιήσαμε τους «συναρτητές» και τον προκαθορισμένο «συναρτητή» στον κώδικά μας.