W C ++ STD oznacza standard. C ++ może mieć zdefiniowaną klasę, z której obiekty są tworzone. Normalna funkcja zdefiniowana jest jak klasa. Wywołanie funkcji jest jak obiekt do zdefiniowanej klasy funkcji. Wywołanie funkcji, w różnych momentach, z różnymi argumentami, jest jak różne obiekty funkcyjne. Teraz C ++ ma predefiniowane klasy funkcji, w których różne obiekty funkcyjne można oficjalnie utworzyć. Można również użyć obiektu funkcyjnego jako wywołania funkcji. Może to być argument funkcji zwrotnej w innym wywołaniu funkcji. Obiekt funkcyjny może zająć miejsce wskaźnika do normalnej funkcji.
STD :: jest deklaracją prototypową funkcji o nazwie, funkcja () w nagłówku biblioteki. Oznacza to, że aby użyć std :: funkcja, lub nagłówek musi zostać włączony do programu. STD :: to także opakowanie, które przyjmuje obiekt funkcji jako argument, aby stworzyć inny obiekt funkcji.
W tym artykule wyjaśnia C ++ STD :: Funkcja, zaczynając od niektórych predefiniowanych klas funkcji.
Treść artykułu
- Niektóre predefiniowane klasy funkcyjne
- STD :: Transform
- std :: funkcja właściwa
- Wniosek
Niektóre predefiniowane klasy funkcyjne
Funkcjonalny nagłówek ma wiele predefiniowanych prototypów klasy funkcji, w kategoriach referencyjnych operatorów arytmetycznych, porównań, klasy_three_way, operacje logiczne, operacje bitowe, wiązanie, opakowania funkcji polimorficznych, wyszukiwarki i szablony klas.
W kategorii arytmetycznej dwa prototypy klasy funkcji to:
szablonUwaga: struktura to rodzaj klasy. Pierwszy z zaprzestania liczb na liście. Drugi dodałby odpowiednie liczby dwóch list razem, co daje jedną listę dodatków.
STD :: Transform
Istnieje funkcja STD :: transform () w bibliotece algorytmu. Ta funkcja wzięłaby początek i koniec wektora i użyłby obiektu funkcji negowania, aby negować wszystkie elementy wektora. Obiekt funkcji negacji jest ostatnim argumentem wywołania funkcji transformacji. Prototyp (składnia) to:
szablongdzie wyjście jest drugim wektorem dla powstałych liczb negowanych. Outputiterator jest również zwracany.
Poniższy program pokazuje użycie składni:
#włączaćWyjście to:
-1 -2-3-4 -5Dyrektywy obejmują nagłówki iostream, algorytm, funkcjonalne i wektorowe nagłówki. Standardowa przestrzeń nazw jest używana. Wektory wejściowe i wyjściowe są tego samego rozmiaru. Funkcja std :: transform () jest używana bez, zwracając, ponieważ element powrotu jest argumentem funkcji transformacji. For pętka drukuje negowane liczby na wyjściu. Pozycja powrotu dla funkcji transformacji zostałaby zakodowana w następujący sposób:
Vtrout.początek () = transformuj (vtr1.początek (), vtr1.end (), vtrout.początek (), negujW formie przeciążonej funkcja transformacji () wzięłaby początek i koniec jednego wektora. Następnie początek innego wektora i użyj obiektu funkcji plus, aby dodać odpowiednie liczby dwóch wektorów, aby mieć nowy wektor z sumami. Obiekt funkcji plus jest ostatnim argumentem wywołania funkcji transformacji, w tym celu. Prototyp (składnia) to:
szablongdzie wyjście jest trzeci wektorze dla uzyskanych liczb sum. Outputiterator jest również zwracany, ale nie trzeba tego wdrażać. Zobacz następujący program:
#włączaćWyjście to:
11 22 33 44 55Dyrektywy obejmują nagłówki iostream, algorytm, funkcjonalne i wektorowe nagłówki. Standardowa przestrzeń nazw jest używana. Dwa wektory wejściowe i jeden wyjściowy są tego samego rozmiaru. Funkcja std :: transform () jest używana bez, zwracając, ponieważ element powrotu jest argumentem funkcji transformacji. For pętka drukuje sumowane liczby na wyjściu.
std :: funkcja właściwa
Wszystkie powyższe wyjaśniło, jak profesjonalnie używać obiektu funkcyjnego. Programator może napisać własną funkcję, taką jak funkcja transformacji () i użyć własnego obiektu funkcji, który napisał.
STD :: Funkcja to nie jest wielka sprawa. Jest to opakowanie, które przyjąłby dowolny obiekt funkcji jako argument. W tej sekcji artykułu ilustruje, jak utworzyć prosty obiekt funkcji i zapakować go w STD :: Funkcja.
Obiekt funkcyjny jest obiektem, którym można się nazwać. Obiekt nazywany to dowolny obiekt, którego można używać jak funkcja. Przykład klasy funkcji, pokazano w następującym kodzie:
#włączaćTo jest najważniejsza część programu, pozbawiona tylko funkcji głównej C ++. Struktura jest jak klasa. Ten kod ma definicję struktury o nazwie structfn (równoważny nazwie klasowej). Struktura ma tylko jeden członek, który jest operatorem nawiasów. Operator jest nieco funkcją. Ta funkcja przyjmuje dwa liczby całkowite jako argumenty i zwraca kolejną liczbę całkowitą. Faktycznie zwraca sumę dwóch liczb całkowitych. Struct, structfn jest typem obiektu funkcji.
Instanowany obiekt struktury, structfn to fn. „Std :: Funkcja” to inny typ (klasa). Ostatnie stwierdzenie w powyższym kodzie instancja obiektu STD :: Where Std :: jest pomijany, ponieważ jest ono w „Używając przestrzeni nazw Std;”). Nazwa standardowego obiektu dla „std :: funkcja” to f. „F ()” jest konstruktorem obiektu. W tym przypadku jego jedynym argumentem jest FN, który jest obiektem klasy funkcji, structfn. To ostatnie stwierdzenie obejmuje obiekt funkcji.
Operator (funkcja) klasy funkcyjnej (struct) ma dwa argumenty typów int i int int. Zwraca kolejny int. Te charakterystyczne funkcje mogą być reprezentowane jako: int (int, int). Dlatego specjalizacja szablonu konstrukcji funkcji jest .
Składnia konstruktora funkcji, używana powyżej, to:
szablonPozostała część programu to funkcja C ++ Main (). To jest:
int main ()Wyjście to 5. F (2,3) zastosowano zamiast FN (2,3).
Zaletą STD :: Funkcja jest to, że może przyjmować dowolny obiekt funkcji, gdy argumenty i typ powrotu, pobranej funkcji, są znane.
Powyższy obiekt funkcji można zmodyfikować, aby był używany jako wywołanie wywoławcze funkcji plus, w wywołaniu funkcji transformacji.
Wniosek
Std :: Funkcja jest funkcjonalnym nagłówkiem, który musi zostać włączony do programu, aby można go było używać. Owija obiekt funkcyjny. Obiektem funkcyjnym musi być jego argument (konstrukcja Std :: Funkcja). Obiekt funkcyjny jest obiektem, którym można się nazwać. Obiekt nazywany to dowolny obiekt, którego można używać jak funkcja. Zaletą STD :: Funkcja jest to, że może podjąć dowolną funkcję, gdy argumenty i typ powrotu, pobranej funkcji, są znane.