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
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.
#includeprzy 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.