Standardowa zamiana C++

Standardowa Zamiana C

„Zamiana to czynność wymiany dwóch lub więcej rzeczy. Dane pomiędzy dwiema zmiennymi w programowaniu mogą być przełączane. Wymiana rzeczy między dwiema osobami jest możliwa w prawdziwym życiu. Dowolne wartości dwóch obiektów mogą być zamienione za pomocą funkcji z biblioteki standardowej swap() w C++. Został umieszczony pod nagłówkiem „utility” w C11. Funkcja swap() w C++ ma złożoność N dla tablic, ponieważ każdy element musi być zamieniany indywidualnie, podczas gdy trudność funkcji dla stałych jest stała. Funkcja swap() generuje ostrzeżenie lub błąd, jeśli którykolwiek z elementów zmiennych zawiedzie. Spójrz na podpis funkcji dla std::swap() poniżej:

Składnia:

szablon < klasa T > próżnia zamieniać ( T & zmienna_1 , T & zmienna_2 ) ;

Zarówno wartość pierwszej zmiennej, jak i drugiej zmiennej, z których obie przechowują wartości, mają zostać zamienione. Funkcja po prostu przełącza wartości zmiennych; nie ma wyjścia”.







Działanie funkcji swap() w C++

Funkcja swap jest zaimplementowana w C++ przy użyciu następujących trzech linii.



Szablon próżnia zamieniać ( T & i , T & j ) {
T temp. = standardowe :: ruszaj się ( i ) ;
i = standardowe :: ruszaj się ( j ) ;
j = standardowe :: ruszaj się ( temp ) ;
}

Stwierdzenie „T temp = std::move(i)”; tworzy kopię elementu „i” i duplikuje go. Tutaj „i = std::move(j)”; odrzuca oryginalne elementy „i” i przechowuje kopię „i” „j” zamiast oryginalnego „j”. Formuła „j = std:: move(temp)”; zapisz „i” z klonem temp i usuń identyczną zawartość temp. Usuń również zmienną temp po zakończeniu wykonywania funkcji swap().



Przykład 1: Program używający metody std::move do zamiany

Jak zademonstrowano poniżej, możemy zamienić dwa obiekty za pomocą funkcji std::move w C++11.





#include

#uwzględnij



szablon
próżnia zamieniać ( T & a , T & b )
{
T temp. = standardowe :: ruszaj się ( a ) ;
a = standardowe :: ruszaj się ( b ) ;
b = standardowe :: ruszaj się ( temp ) ;
}
int Główny ( )
{
standardowe :: wektor lista = { 10 , 12 , 13 , piętnaście , 16 , 17 } ;
int i = 3 , j = 5 ;
zamieniać ( lista [ i ] , lista [ j ] ) ;
dla ( int i : lista ) {
standardowe :: Cout << i << ' ' ;
}
zwrócić 0 ; }

Mamy deklarację szablonu, która ma obiekt „T”. Następnie ustanowiliśmy funkcję jako „swap”. Funkcja przyjmuje dwa parametry &a i &b typu „T”. W wyniku argumentów T& a, T& b odwołujących się lub przechowujących adres przekazanej zmiennej i aplikujących do nich bezpośrednio bez zwracania, funkcja swap(T& a, T& b) nazywana jest wywołaniem przez odwołanie.



Wewnątrz void swap zastosowaliśmy algorytm zamiany za pomocą metody std::move. Następnie skonstruowaliśmy program główny. Tutaj zadeklarowaliśmy zmienną „list” i zainicjalizowaliśmy ją listą wartości liczbowych. Ustawiliśmy wartości dla „i” i „j” do zamiany. Wartość liczbową znajdującą się przy drugim indeksie zastąpiono wartością liczbową przy indeksie piątym. Następnie wywołaliśmy funkcję swap i przekazaliśmy do niej indeksy „i” i „j” w celu zamiany. Pętla for służy do drukowania listy wymiany.

Dane wyjściowe wyświetliły zmodyfikowaną listę. Możesz obserwować nową wygenerowaną listę zamienioną wartością zgodnie z określonymi indeksami.

Przykład 2: Program używający metody std::swap do zamiany

Wykorzystanie mechanizmu std::swap znalezionego w nagłówku narzędzia (w C++11) jest zwykłą poprawką. Wartości dwóch obiektów są przełączane, aby działał.

#include

#uwzględnij

#include



int Główny ( )
{
standardowe :: wektorarr = { 3 , 6 , 9 , piętnaście , 13 } ;
int i = 3 , j = 4 ;

standardowe :: zamieniać ( Arr [ i ] , Arr [ j ] ) ;

dla ( int i : Arr ) {
standardowe :: Cout << i << ' ' ;
}

zwrócić 0 ;
}

Importując plik nagłówkowy , możemy uzyskać dostęp do funkcji wymiany w naszym programie. Tutaj dołączyliśmy plik nagłówkowy z dwiema innymi ważnymi bibliotekami. Następnie ustaliliśmy główną metodę. Wewnątrz głównej części programu zadeklarowaliśmy wektor, tworząc zmienną „arr”. Zmienna „arr” jest inicjowana pięcioma elementami liczby całkowitej. Pozycje indeksu są przypisane do „i” i „j” do zamiany. Zmienne „i” i „j” są następnie przekazywane do metody std::swap w celu zamiany wartości określonego indeksu. Za pomocą pętli for wydrukowaliśmy zamienione tablice.

Lista uzyskana po operacji zamiany metodą std::swap jest wyświetlana w następujący sposób:

Przykład 3: Program używający metody std::iter_swap do zamiany

Dodatkową opcją jest użycie algorytmu std::iter_swap, który jest wymieniony w nagłówku algorytmu. Sposób, w jaki działa, polega na przełączaniu wartości obiektów, na które wskazują dostarczone iteratory.

#include

#uwzględnij

#include

#include



int Główny ( )
{
standardowe :: wektorvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
automatyczny itr1 = standardowe :: następny ( rzecz. zaczynać ( ) , i ) ;
automatyczny itr2 = standardowe :: następny ( rzecz. zaczynać ( ) , j ) ;

standardowe :: iter_swap ( itr1 , itr2 ) ;
dla ( int i : rzecz ) {
standardowe :: Cout << i << ' ' ;
}
zwrócić 0 ;
}

Do głównej metody programu zadeklarowaliśmy zmienną wektorową „vec” i przypisaliśmy jej wektorową listę liczb. Następnie określiliśmy pozycję indeksu do zmiennej „i” i „j”. Wywoływana jest metoda std::iter_swap, która przyjmuje jako argument iter1 i iter2. Iter1 i iter2 są deklarowane za pomocą słowa kluczowego auto i mają operację iteracji. Metoda pętli for drukuje zamienione wartości tablicy wektorowej po wykonaniu.

Metoda std::iter_swap pomyślnie zamieniła wartości określonych wektorów.

Przykład 4: Program używania bez zmiennych tymczasowych do zamiany

Ten przykład pokazuje nowy sposób zamiany liczb w kodzie C++ bez użycia zmiennych tymczasowych.

#include

przy użyciu standardowej przestrzeni nazw ;

int Główny ( )
{
int x1 = dwa , x2 = 12 ;
Cout << „Przed zamianą”. << koniec ;
Cout << „x1 =” << x1 << ', x2 = ' << x2 << koniec ;

x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;

Cout << ' \n Po zamianie.' << koniec ;
Cout << „x1 =” << x1 << ', x2 = ' << x2 << koniec ;

zwrócić 0 ; }

Przyjrzyjmy się działaniu tego programu. Tutaj zadeklarowaliśmy x1 i x2, które są początkowo ustawione odpowiednio na liczbę. Następnie, korzystając ze wzoru x1 = x1+ x2, dodajemy x1 i x2 i wstawiamy wynik do x1. Oznacza to, że x1 równa się 2 dodać 12. Dlatego teraz równa się 14. Następnie stosujemy wzór x2 = x1 – x2. Oznacza to, że x2 = 14 – 12. Zatem x2 jest teraz równe 2. Ponownie stosujemy wzór x1 = x1 – x2. Oznacza to, że x1 = 14 – 2. Zatem x1 = 12 na końcu. W rezultacie numery zostały zamienione.

Zamieniony numer przed i po jest wyświetlany na następnym ekranie.

Wniosek

Tutaj omówimy pełny opis swap() w C++, jego użycie i kilka przykładów, które pokazują, jak to działa. Za pomocą funkcji std::swap() można zamienić wartości dwóch zmiennych. C++ STL zawiera wbudowaną funkcję o nazwie std::swap(). Funkcja swap(T&zmienna 1, T&zmienna 2) wywołuje przez odwołanie, a C++ przeciąża swap() w zależności od typu zmiennych danych są również wyjaśnione w tym samouczku.