C++ Std Swap

C Std Swap



»Zamenjava je dejanje izmenjave dveh ali več stvari. Podatki med dvema spremenljivkama v programiranju se lahko preklapljajo. Izmenjava stvari med dvema osebama je možna v resničnem življenju. Vrednosti katerih koli dveh predmetov je mogoče zamenjati s standardno knjižnično funkcijo swap() v C++. Postavljen je bil pod glavo »pripomoček« v C11. Funkcija swap() v C++ ima kompleksnost N za nize, ker je treba vsak element zamenjati posebej, medtem ko je težavnost funkcije za konstante konstantna. Funkcija swap() vrže opozorilo ali napako, če kateri od elementov spremenljivke ne uspe. Oglejte si podpis funkcije za std::swap() spodaj:

Sintaksa:

predlogo < razred T > praznina zamenjava ( T & spremenljivka_1 , T & spremenljivka_2 ) ;

Tako vrednost prve spremenljivke kot druge spremenljivke, ki obe hranita vrednosti, je treba zamenjati. Funkcija samo preklopi vrednosti spremenljivk; nima izhoda.'







Delovanje funkcije swap() v C++

Funkcija zamenjave je implementirana v C++ z uporabo naslednjih treh vrstic.



Predloga praznina zamenjava ( T & jaz , T & j ) {
T temp = std :: premakniti ( jaz ) ;
jaz = std :: premakniti ( j ) ;
j = std :: premakniti ( temp ) ;
}

Stavek “T temp = std::move(i)”; naredi kopijo elementa 'i' in jo podvoji. Tukaj je 'i = std::move(j)'; zavrže originalne elemente 'i' in shrani 'i' kopijo 'j' namesto originalnega 'j'. Formula “j = std:: move(temp)”; shranite »i« s klonom temp in odstranite enako vsebino temp. Prav tako izbrišite začasno spremenljivko, ko je izvajanje funkcije swap() končano.



Primer 1: Program z uporabo metode std::move za zamenjavo

Kot je prikazano spodaj, lahko zamenjamo dva predmeta s funkcijo C++11 std::move.





#include

#include



predlogo
praznina zamenjava ( T & a , T & b )
{
T temp = std :: premakniti ( a ) ;
a = std :: premakniti ( b ) ;
b = std :: premakniti ( temp ) ;
}
int glavni ( )
{
std :: vektor seznam = { 10 , 12 , 13 , petnajst , 16 , 17 } ;
int jaz = 3 , j = 5 ;
zamenjava ( seznam [ jaz ] , seznam [ j ] ) ;
za ( int jaz : seznam ) {
std :: cout << jaz << ' ' ;
}
vrnitev 0 ; }

Imamo deklaracijo predloge, ki ima objekt 'T'. Po tem smo vzpostavili funkcijo kot 'swap'. Funkcija sprejme dva parametra &a in &b tipa 'T'. Ker se argumenti T& a, T& b sklicujejo ali shranijo naslov posredovane spremenljivke in se nanje nanašajo neposredno brez vrnitve, se funkcija swap(T& a, T& b) imenuje klic s sklicevanjem.



Znotraj zamenjave void smo uporabili algoritem zamenjave z uporabo metode std::move. Nato smo sestavili glavni program. Tukaj smo deklarirali spremenljivko 'seznam' in jo inicializirali s seznamom številskih vrednosti. Nastavili smo vrednosti za 'i' in 'j' za zamenjavo. Številčna vrednost, ki se nahaja pri drugem indeksu, je bila nadomeščena s številčno vrednostjo pri petem indeksu. Nato smo poklicali funkcijo zamenjave in ji posredovali indeksa »i« in »j« za zamenjavo. Zanka for se uporablja za tiskanje zamenjanega seznama.

Izhod je prikazal spremenjeni seznam. Opazite lahko, da je nov ustvarjen seznam zamenjal vrednost glede na podane indekse.

Primer 2: Program z uporabo metode std::swap za zamenjavo

Uporaba mehanizma std::swap, ki ga najdete v glavi pripomočka (v C++11), je običajen popravek. Vrednosti dveh predmetov se preklopita, da omogočita delovanje.

#include

#include

#include



int glavni ( )
{
std :: vektorarr = { 3 , 6 , 9 , petnajst , 13 } ;
int jaz = 3 , j = 4 ;

std :: zamenjava ( prir [ jaz ] , prir [ j ] ) ;

za ( int jaz : prir ) {
std :: cout << jaz << ' ' ;
}

vrnitev 0 ;
}

Z uvozom datoteke glave lahko dostopamo do funkcije swap v našem programu. Tukaj smo vključili datoteko glave z dvema pomembnima knjižnicama. Nato smo vzpostavili glavno metodo int. Znotraj programa main smo deklarirali vektor tako, da smo ustvarili spremenljivko 'arr.' Spremenljivka 'arr' je inicializirana s petimi elementi celega števila. Indeksni položaji so dodeljeni 'i' in 'j' za zamenjavo. Spremenljivki »i« in »j« se nato posredujeta metodi std::swap za zamenjavo vrednosti podanega indeksa. Z zanko for smo natisnili zamenjana polja.

Seznam, pridobljen po operaciji zamenjave z uporabo metode std::swap, je prikazan na naslednji način:

Primer 3: Program, ki uporablja metodo std::iter_swap za zamenjavo

Uporaba algoritma std::iter_swap, ki je naveden v glavi algoritma, je dodatna možnost. Deluje tako, da preklaplja vrednosti objektov, na katere kažejo navedeni iteratorji.

#include

#include

#include

#include



int glavni ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int jaz = 0 , j = 4 ;
avto itr1 = std :: Naslednji ( stvar. začeti ( ) , jaz ) ;
avto itr2 = std :: Naslednji ( stvar. začeti ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
za ( int jaz : stvar ) {
std :: cout << jaz << ' ' ;
}
vrnitev 0 ;
}

Glavni metodi programa smo deklarirali vektorsko spremenljivko 'vec' in ji dodelili vektorski seznam števil. Nato smo določili položaj indeksa za spremenljivki 'i' in 'j'. Prikliče se metoda std::iter_swap, ki vzame iter1 in iter2 kot argument. Iter1 in iter2 sta deklarirana s ključno besedo auto in imata operacijo ponovitve. Metoda zanke for natisne zamenjane vrednosti vektorske matrike ob izvedbi.

Metoda std::iter_swap je uspešno zamenjala vrednosti navedenih vektorjev.

Primer 4: Program za uporabo brez začasnih spremenljivk za zamenjavo

Ta primer prikazuje nov način zamenjave števil v kodi C++ brez uporabe začasnih spremenljivk.

#include

uporaba imenskega prostora std ;

int glavni ( )
{
int x1 = dva , x2 = 12 ;
cout << 'Pred zamenjavo.' << konec ;
cout << 'x1 =' << x1 << ', x2 = ' << x2 << konec ;

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

cout << ' \n Po zamenjavi.' << konec ;
cout << 'x1 =' << x1 << ', x2 = ' << x2 << konec ;

vrnitev 0 ; }

Oglejmo si delovanje tega programa. Tukaj smo deklarirali x1 in x2, ki sta prvotno nastavljena s številko. Nato z uporabo formule x1 = x1+ x2 seštejemo x1 in x2 ter rezultat vnesemo v x1. To pomeni, da je x1 enako 2 plus 12. Zato je zdaj enako 14. Nato uporabimo formulo x2 = x1 – x2. To pomeni, da je x2 = 14 – 12. Zato je x2 zdaj enak 2. Še enkrat uporabimo formulo x1 = x1 – x2. To pomeni, da je x1 = 14 – 2. Zato je x1 = 12 na koncu. Posledično so bile številke zamenjane.

Številka, ki je bila zamenjana pred in po, je prikazana na naslednjem pozivnem zaslonu.

Zaključek

Tukaj bomo pregledali celoten opis swap() v C++, njegovo uporabo in nekaj primerov, ki prikazujejo, kako deluje. Z uporabo funkcije std:: swap() je mogoče zamenjati vrednosti dveh spremenljivk. C++ STL vključuje vgrajeno funkcijo, imenovano std::swap(). Funkcija swap(T& spremenljivka 1, T& spremenljivka 2) kliče po sklicu in v tej vadnici so razložene tudi preobremenitve C++ swap() glede na vrsto podatkovnih spremenljivk.