Transformacja C ++ STD

Transformacja C ++ STD
Std :: Funkcja transformacji istnieje w C ++ STL. Musimy obejmować plik nagłówka, aby wykorzystać tę funkcję. Ta metoda jest wykorzystywana do przeprowadzania operacji na wszystkich komponentach. Zastosowuje operacje do jednego lub więcej komponentów tablicy i zapisuje dane wyjściowe w wynikowej tablicy. To podejście działa na dwa sposoby. To są:

Unary Operation: Jest to stosowane do każdego elementu serii wejściowych, a wyjście jest przechowywane w innej tablicy.

Operacja binarna: Ta operacja jest stosowana do każdej pozycji pierwszej serii wejściowej i odpowiedniego składnika drugiej serii wejściowych. Podobnie jak operacja Unary, wynik jest również zapisywany w tablicy wyjściowej.

Ani Unary Operation, ani operacja binarna bezpośrednio nie zmieniają komponentu przekazanego jako parametr. Jeśli wyjście określa tę samą serię, są one zmieniane pośrednio przez algorytm. Omówmy funkcję STD :: Transform i jej tryby szczegółowo.

Unary Operation:

STD :: transformuje określoną funkcję do jednego zakresu i zapisuje dane wyjściowe w innym zakresie. Ta technika wykonuje nieżyą operację na komponentach w serii (tablica, tablica+12), a następnie zapisuje dane wyjściowe w serii, zaczynając od wyniku.

Kolejny program pokazuje, jak wykonywać nieusowe operacje w tablicy. Funkcja transformacji () odbiera wskaźnik do początkowych i końcowych pozycji tablicy oraz początkową pozycję pomisowej tablicy.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int Square (int m)
powrót m*m;

int main (int lmn, char ** pqr)
int tablica [12] = 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26;
wynik int [12];
transformacja (tablica, tablica+12, wynik, kwadrat);
for (int j = 0; j<12; j++)
Cout <

Uwzględniając biblioteki, rozpoczniemy program. Plik nagłówka # obejmuje cele wejściowe i wyjściowe. Dlatego plik nagłówka # obejmuje funkcję transformacji (). Definiujemy liczbę całkowitą typu danych do operacji nie. Również definiujemy typ danych liczb całkowitych do jego zmiennej „M”.

Ponadto definiujemy funkcję kwadratową, biorąc kwadrat zmiennej. W głównym ciele deklarujemy tablicę. W tablicy bierzemy 12 liczb równych. Rodzaj danych tablicy wejściowej i wynikowej tablicy jest podobny. Wyjście jest zapisywane w nowej tablicy. Następnie stosujemy funkcję Transform (). Te iteratory funkcji do pozycji początkowych i końcowych serii. Seria wykorzystuje (tablica, tablica+12), która zawiera wszystkie elementy tablicy wejściowej. Zawiera również komponent, na który wskazuje tablica.

Tutaj wynikowa tablica jest iteratorem wyjściowym, który iteruje do początku serii, w której dane wyjściowe jest przechowywane. Funkcja Unary przyjmuje element kategorii wskazanej na tablicę jako argument, a następnie oddzwonił wartość, którą może zmieniać wynikowy tablica. Unary Operation dotyczy serii zdefiniowanej w (tablica, tablica+12). Stosuje to metodę do każdego elementu serii. W końcu używamy do pętli. Każdy element jest drukowany na nowej linii.

Operacja binarna:

Ta technika przeprowadza działanie binarne na komponentach w serii (pierwszy element, ostatni element) z komponentem obecnym w drugiej pozycji w serii. Zapisuje wynik w serii, zaczynając od wyniku. Transform () stosuje funkcję, która przyjmuje dwa komponenty i odbiera dwa parametry z serii wejściowych dla każdej pary komponentów. W tym programie wykonujemy operacje binarne na określonych danych. Jeśli istnieje potrzeba dodania komponentów z dwóch tablic, wykorzystujemy metodę operatora binarnego.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int operator_increment (int k, int l)
zwrócić K+L;

int main ()
int a = 8;
int inp_arr1 [] = 4, 7, 12, 36, 75, 23, 48, 69;
int inp_arr2 [] = 2, 15, 6, 95, 8, 73, 4, 80;
int otp_arr [a];
STD :: Cout <<"First array:";
dla (int k = 0; kCout <<" <
Cout <<'\n';
STD :: Cout <<"Second array:";
dla (int k = 0; kCout <<" <
Cout <<'\n';
std :: transform (inp_arr1, inp_arr1+a, inp_arr2, otp_arr, operator_increment);
STD :: Cout <<"Resultant array:";
dla (int k = 0; k<8; k++)
Cout <<" << otp_arr[k];

Cout <<'\n';
powrót 0;

W tym przypadku integrujemy nowy plik nagłówka używany do STD :: Transform, a kolejny plik nagłówka #include jest używany do std :: vector. Teraz stosujemy funkcję binarną przez funkcję transformacji. Deklarujemy tutaj dwie zmienne „k” i „l” i zwraca dodanie zmiennej „k” do zmiennej „l”. Ponadto definiujemy dwie różne tablice. W każdej tablicy jest 8 elementów. I aby to reprezentować, używamy zmiennej „A”.

Typ danych tablic to liczba całkowita. Wyjście jest przechowywane w nowej tablicy, która jest reprezentowana przez „OTP_ARR”. Chcemy wydrukować tekst „Pierwsza tablica”; Dlatego używamy funkcji Cout. Złożyliśmy podanie o pętlę do pierwszej wprowadzonej tablicy. W ten sposób otrzymujemy elementy pierwszej tablicy. Stosujemy nową postać „\ n”.

Następnie ponownie używamy pętli, aby uzyskać drugą tablicę. Główną częścią programu jest zastosowanie funkcji transformacji dla tych tablic. Ta funkcja zajmuje pierwszy i ostatni element pierwszej tablicy, pierwszy element drugiej tablicy i pierwszy element wynikającej z nich tablicy. Następnie funkcja binarna jest stosowana do dwóch tablic. Metoda STD :: Transform () stosuje operator binarny do każdego komponentu w zakresie i zapisuje wartość zwracania. W ten sam sposób otrzymujemy wynikową tablicę. Złożyliśmy również podanie o pętlę do wynikającej z nich tablicy.

Ta funkcja dostaje również początek tablicy wyjściowej i wskaźnika do funkcji binarnej, która dotyczy dwóch zdefiniowanych tablic. Funkcja binarna akceptuje dwa elementy (odpowiednio z każdej z dwóch serii) jako argumenty. I zwraca tablicę przekształconą w typ danych OTP_ARR.

Dodanie dwóch wektorów:

Możemy użyć funkcji STD ::, aby uczynić serię docelową podobną do serii wejściowych i wykonać zmianę w miejscu. Kolejny przykład pokazuje, jak wykorzystać tłumaczenia binarne.

#włączać
#włączać
#włączać
#włączać
int op_increase (int j) return ++ j;
int main ()
STD :: wektorABC;
STD :: wektorXYZ;
dla (int j = 1; j<8; j++)
ABC.push_back (j*20);
XYZ.Zmień rozmiar (ABC.rozmiar());
STD :: transformuj (ABC.początek (), ABC.end (), xyz.początek (), op_increase);
STD :: transformuj (ABC.początek (), ABC.end (), xyz.początek (), ABC.początek (), std :: plus());
STD :: Cout <<"Output";
dla (std :: wektor:: iterator it = abc.zaczynać(); To!= ABC.koniec(); ++ it)
STD :: Cout <<" <<*it;
STD :: Cout <<'\n';
powrót 0;

Po uruchomieniu programu najpierw biblioteki zostaną zintegrowane. #include biblioteka jest stosowana do funkcji STD ::. #include dotyczy funkcji STD :: Vector. #Include odnosi metodę std :: plus. Funkcja op_increase () jest stosowana do konwersji w celu zwiększenia wyceny parametrów.

Integrujemy dwa wektory, a ich typy danych są podobne. Po ogłoszeniu pętli stosujemy funkcję STD ::. Deklarujemy 8 elementów do pętli. W funkcji transformacji () używana seria jest (ABC.Zacznij, ABC.koniec), który obejmuje wszystkie elementy między ABC.Rozpocznij i ABC.koniec. Tutaj xyz.Rozpocznij iterację do lokalizacji początkowej drugiej serii. STD :: Plus () to wbudowana funkcja i jest wykorzystywana w konwersji binarnej, aby dodać dwa wektory. Wynik wyżej wymienionego kodu wygląda tak:

Wniosek:

W tym artykule wyjaśniono funkcję STD :: Transform. Funkcja jest wykorzystywana na dwa sposoby. Funkcja nieusowa przyjmuje tylko jeden komponent jako argument i oddaje wartość. Funkcja binarna, która przyjmuje dwa komponenty (jeden z każdej z dwóch serii) jako argumenty, a następnie zwraca wynikową wartość. Operacja binarna zawsze dotyczy par komponentów w dwóch zakresach. Podaje określoną funkcję do serii i zapisuje dane wyjściowe w innej serii.