C ++ STD SWAP

C ++ STD SWAP
„Zmienanie to akt wymiany dwóch lub więcej rzeczy. Dane między dwiema zmiennymi w programowaniu można przełączyć. Wymiana rzeczy między dwiema osobami jest możliwa w prawdziwym życiu. Wartości dowolnej dwóch obiektów można zamienić za pomocą standardowej funkcji biblioteki swap () w c++. Został umieszczony pod nagłówkiem „użyteczności” 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 stałych jest stała. Funkcja SWAP () rzuca 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 < class T > void swap (t & variable_1, t & varible_2);

Zarówno wartość pierwszej zmiennej, jak i druga zmienna, oba, które mają wartości, należy zamienić. 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 wierszy.

Szablon void swap (t & i, t & j)
T temp = std :: mocowanie (i);
i = std :: ruch (j);
j = std :: ruch (temp);

Stwierdzenie „t temp = std :: mocowanie (i)”; tworzy kopię elementu „i” i powiela go. Tutaj „i = std :: ruch (j)”; odrzuca oryginalne elementy „i” i przechowuje kopię „J” „J” zamiast oryginalnego „J”. Formuła „j = std :: ruch (temp)”; Zapisz „I” z klonem temperatury i usuń identyczną zawartość temperatury. Usuń również zmienną tymczasową po zakończeniu wykonywania funkcji swap ().

Przykład 1: Program wykorzystujący metodę STD :: Metoda ruchu do zamiany

Jak pokazano poniżej, możemy zamienić dwa obiekty za pomocą funkcji C ++ 11 Std ::.

#włączać
#włączać
szablon
Void swap (t & a, t & b)

T temp = std :: mocowanie (a);
a = std :: ruch (b);
B = std :: ruch (temp);

int main ()

Std :: List Vector = 10, 12, 13, 15, 16, 17;
int i = 3, j = 5;
swap (lista [i], lista [j]);
dla (int i: lista)
STD :: Cout<
powrót 0;

Mamy deklarację szablonu, która ma obiekt „t”. Następnie ustanowiliśmy funkcję jako „zamiana”. Funkcja przyjmuje dwa parametry i A i & B, typu „T”. W wyniku argumentów T&A, T&B odnoszących się lub przechowywania adresu przekazanej zmiennej i stosowania bezpośrednio do nich bez zwracania, funkcja swap (T&A, T&B) jest nazywana wywołaniem przez odniesienie.

Wewnątrz zamieniania pustki zastosowaliśmy algorytm zamiany za pomocą metody STD :: Move Method. Następnie skonstruowaliśmy główne programy programu. Tutaj zadeklarowaliśmy zmienną „listę” i zainicjowaliśmy ją z listą wartości liczbowych. Ustawiliśmy wartości „i” i „j” do zamiany. Wartość liczbowa znajdująca się w drugim indeksie została zastąpiona wartością liczbową w piątym indeksie. Następnie wywołaliśmy funkcję swap i przekazaliśmy do niej indeks „i” i „j” do zamiany. Pętla jest używana do drukowania wymienionej listy.

Wyjście wyświetlało zmodyfikowaną listę. Możesz zaobserwować nową listę wygenerowaną na zamienioną wartość zgodnie z określonymi indeksami.

Przykład 2: Program wykorzystujący metodę STD :: Metoda wymiany do wymiany

Wykorzystanie mechanizmu STD :: Występowanie w nagłówku użyteczności (w C ++ 11) jest zwykłą poprawką. Wartości dwóch obiektów są przełączane, aby działać.

#włączać
#włączać
#włączać
int main ()

std :: vectorarr = 3, 6, 9, 15, 13;
int i = 3, j = 4;
std :: swap (arr [i], arr [j]);
dla (int i: arr)
STD :: Cout<
powrót 0;

Importując plik nagłówka, możemy uzyskać dostęp do funkcji swap w naszym programie. Tutaj dołączyliśmy plik nagłówka z dwiema ważniejszymi bibliotekami. Następnie ustaliliśmy główną metodę int. W głównym programie zadeklarowaliśmy wektor, tworząc zmienną „ARR.„Zmienna„ ARR ”jest inicjowana z pięcioma elementami liczby całkowitej. Pozycje indeksu są przypisywane do „i” i „j” do zamiany. Zmienne „I” i „J” są następnie przekazywane do metody STD ::. Z pętlą dla formy wydrukowaliśmy zamienione tablice.

Lista uzyskana po operacji zamiany za pomocą metody STD :: wyświetlana jest w następujący sposób:

Przykład 3: Program wykorzystujący metodę STD :: ITER_SWAP do zamiany

Użycie algorytmu STD :: ITER_SWAP, który jest wymieniony w nagłówku algorytmu, jest dodatkową opcją. Sposób, w jaki działa, jest poprzez przełączanie wartości obiektów, na które wskazują dostarczone iteratory.

#włączać
#włączać
#włączać
#włączać
int main ()

std :: vectorVec = 64, 61, 62, 63, 60;
int i = 0, j = 4;
auto iTr1 = std :: następny (vec.początek (), i);
auto iTr2 = std :: następny (vec.początek (), j);
std :: iter_swap (ITR1, ITR2);
dla (int i: vec)
STD :: Cout<
powrót 0;

Do głównej metody programu zadeklarowaliśmy zmienną wektorową „VEC” i przypisaliśmy jej listę liczb wektorowych. Następnie określiliśmy pozycję indeksu do zmiennej „I” i „J”. Metoda STD :: ITER_SWAP jest wywoływana przez ITER1 i ITER2 jako argument. ITER1 i ITER2 są zadeklarowane za pomocą automatycznego słowa kluczowego i mają operację iteracji. Metoda For Loop drukuje zamienione wartości tablicy wektora po wykonaniu.

Metoda STD :: ITER_SWAP z powodzeniem zamieniła wartości określonych wektorów.

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

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

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int x1 = 2, x2 = 12;
Cout<< "Before swapping." <Cout<< "x1 = " << x1 << ", x2 = " << x2 <x1 = x1 + x2;
x2 = x1 - x2;
x1 = x1 * x2;
Cout<< "\nAfter swapping." <Cout<< "x1 = " << x1 << ", x2 = " << x2 <return 0;

Sprawdźmy działanie tego programu. Tutaj zadeklarowaliśmy x1 i x2, które są początkowo ustawione odpowiednio z liczbą. Następnie, używając wzoru x1 = x1+ x2, dodajemy x1 i x2 i umieszczamy wynik w x1. Wskazuje to, że x1 jest równy 2 plus 12. Dlatego teraz równa się 14. Następnie stosujemy wzór x2 = x1 - x2. Wskazuje to, że x2 = 14–12. Dlatego x2 jest teraz równe 2. Jeszcze raz stosujemy wzór x1 = x1 - x2. Wskazuje to, że x1 = 14–2. Dlatego x1 = 12 na końcu. W rezultacie liczby zostały zmienione.

Liczba zamieniona przed i po wyświetlaniu na następującym ekranie podpowiedzi.

Wniosek

Tutaj omawiamy pełny opis swap () w C ++, jego użycie i niektóre przykłady pokazujące, jak funkcjonuje. Korzystając z funkcji STD :: SWAP (), można przełączyć dwie wartości zmiennych. C ++ STL zawiera wbudowaną funkcję o nazwie STD :: swap (). Wywoływanie funkcji wymiany (T & zmienna 1, T i zmienna 2) i przeciążenia C ++ swap () w zależności od rodzaju zmiennych danych są również wyjaśnione w tym samouczku.