C++ Std Swap

C Std Swap



'Swapping er handlingen at udveksle to eller flere ting. Dataene mellem to variable i programmering kan skiftes. Udveksling af ting mellem to personer er mulig i det virkelige liv. Alle to objekters værdier kan byttes ved hjælp af standardbiblioteksfunktionen swap() i C++. Det er blevet placeret under 'utility'-overskriften i C11. Funktionen swap() i C++ har en kompleksitet på N for arrays, fordi hvert element skal byttes individuelt, mens sværhedsgraden af ​​funktionen for konstanter er konstant. Funktionen swap() kaster en advarsel eller fejl, hvis nogen af ​​de variable elementer fejler. Se på funktionens signatur for std::swap() nedenfor:

Syntaks:

skabelon < klasse T > ugyldig bytte rundt ( T & variabel_1 , T & variabel_2 ) ;

Både værdien af ​​den første variabel og den anden variabel, som begge lagrer værdier, skal byttes. Funktionen skifter blot værdierne af variablerne; den har ingen output.'







Arbejde med swap()-funktionen i C++

Swap-funktionen er implementeret i C++ ved hjælp af følgende tre linjer.



Skabelon ugyldig bytte rundt ( T & jeg , T & j ) {
T temp = std :: bevæge sig ( jeg ) ;
jeg = std :: bevæge sig ( j ) ;
j = std :: bevæge sig ( Midlertidig ) ;
}

Udsagnet 'T temp = std::move(i)'; laver en kopi af elementet 'i' og duplikerer det. Her, 'i = std::move(j)'; kasserer de originale elementer af 'i' og gemmer 'i' kopien af ​​'j' i stedet for det originale 'j'. Formlen 'j = std:: move(temp)'; gem 'i' med en klon af temp, og fjern det identiske indhold af temp. Slet også temp-variablen, efter at swap()-funktionen er udført.



Eksempel 1: Program ved hjælp af std::move Method til Swap

Som vist nedenfor kan vi bytte to objekter ved hjælp af C++11-funktionen std::move.





#include

#inkluder



skabelon
ugyldig bytte rundt ( T & -en , T & b )
{
T temp = std :: bevæge sig ( -en ) ;
-en = std :: bevæge sig ( b ) ;
b = std :: bevæge sig ( Midlertidig ) ;
}
int vigtigste ( )
{
std :: vektor liste = { 10 , 12 , 13 , femten , 16 , 17 } ;
int jeg = 3 , j = 5 ;
bytte rundt ( liste [ jeg ] , liste [ j ] ) ;
til ( int jeg : liste ) {
std :: cout << jeg << ' ' ;
}
Vend tilbage 0 ; }

Vi har en skabelonerklæring, der har et objekt 'T'. Derefter har vi etableret funktionen som 'swap'. Funktionen tager de to parametre &a og &b, af typen 'T'. Som et resultat af argumenterne T& a, T& b, der refererer til eller lagrer adressen på den beståede variabel og anvendes direkte på dem uden at vende tilbage, kaldes swap(T& a, T& b)-funktionen et kald ved reference.



Inde i void swap har vi anvendt algoritmen for swapping ved at bruge std::move metoden. Derefter konstruerede vi hovedprogrammerne. Her har vi erklæret variablen 'liste' og initialiseret den med listen over numeriske værdier. Vi har sat værdierne for 'i' og 'j' for at bytte. Den numeriske værdi placeret ved det andet indeks blev erstattet med den numeriske værdi ved det femte indeks. Derefter kaldte vi swap-funktionen og sendte 'i' og 'j' indekserne til den for at bytte. For-løkken bruges til at udskrive den byttede liste.

Outputtet viste den ændrede liste. Du kan se den nye genererede liste byttede værdi i henhold til specificerede indekser.

Eksempel 2: Program ved hjælp af std::swap metode til at bytte

Brug af std::swap-mekanismen fundet i hjælpeprogrammets header (i C++11) er den sædvanlige rettelse. To objekters værdier skiftes for at få det til at fungere.

#include

#inkluder

#inkluder



int vigtigste ( )
{
std :: vektorarr = { 3 , 6 , 9 , femten , 13 } ;
int jeg = 3 , j = 4 ;

std :: bytte rundt ( arr [ jeg ] , arr [ j ] ) ;

til ( int jeg : arr ) {
std :: cout << jeg << ' ' ;
}

Vend tilbage 0 ;
}

Ved at importere header-filen kan vi få adgang til swap-funktionen i vores program. Her har vi inkluderet header-filen med yderligere to vigtige biblioteker. Derefter har vi etableret int hovedmetoden. Inde i programmets hoved har vi erklæret vektoren ved at skabe variablen 'arr.' Variablen 'arr' initialiseres med de fem elementer i heltallet. Indekspositionerne er tildelt 'i' og 'j' for at bytte. Variablerne 'i' og 'j' videregives derefter til std::swap-metoden til ombytning af værdien af ​​det angivne indeks. Med for-løkken har vi udskrevet de ombyttede arrays.

Listen opnået efter bytteoperationen ved at bruge std::swap-metoden vises som følger:

Eksempel 3: Program ved hjælp af std::iter_swap metode til at bytte

Brug af std::iter_swap-algoritmen, som er angivet i overskriften for algoritmen, er en ekstra mulighed. Den måde, den fungerer på, er ved at skifte værdierne for de objekter, som de medfølgende iteratorer peger på.

#include

#inkluder

#inkluder

#include



int vigtigste ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int jeg = 0 , j = 4 ;
auto itr1 = std :: Næste ( en ting. begynde ( ) , jeg ) ;
auto itr2 = std :: Næste ( en ting. begynde ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
til ( int jeg : en ting ) {
std :: cout << jeg << ' ' ;
}
Vend tilbage 0 ;
}

Til programmets hovedmetode har vi erklæret en vektorvariabel 'vec' og tildelt den en vektorliste med tal. Derefter specificerede vi indekspositionen til variablen 'i' og 'j'. Metoden std::iter_swap påberåbes, der tager iter1 og iter2 som et argument. Iter1 og iter2 er deklareret med auto nøgleordet og har iterationsoperationen. For loop-metoden udskriver de ombyttede værdier af vektorarrayet ved udførelse.

Metoden std::iter_swap byttede med succes værdierne af de angivne vektorer.

Eksempel 4: Program til brug uden midlertidige variabler til at bytte

Dette eksempel viser en ny måde at bytte tal i C++ kode uden brug af midlertidige variable.

#include

bruger navneområde std ;

int vigtigste ( )
{
int x1 = to , x2 = 12 ;
cout << 'Før du bytter.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

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

cout << ' \n Efter bytte.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

Vend tilbage 0 ; }

Lad os undersøge driften af ​​dette program. Her har vi deklareret x1 og x2, som i første omgang er sat med henholdsvis tallet. Derefter, ved at bruge formlen x1 = x1+ x2, tilføjer vi x1 og x2 og sætter resultatet i x1. Dette indikerer, at x1 er lig med 2 plus 12. Derfor er det nu lig med 14. Så anvender vi formlen x2 = x1 – x2. Dette indikerer, at x2 = 14 – 12. Derfor er x2 nu lig med 2. Endnu en gang anvender vi formlen x1 = x1 – x2. Dette indikerer, at x1 = 14 – 2. Derfor er x1 = 12 i slutningen. Som følge heraf er tallene blevet skiftet.

Nummeret, der er byttet om før og efter, vises på følgende promptskærm.

Konklusion

Her gennemgår vi en komplet beskrivelse af swap() i C++, dets brug og nogle eksempler, der viser, hvordan det fungerer. Ved at bruge std:: swap()-funktionen kan to variables værdier skiftes. C++ STL indeholder en indbygget funktion kaldet std::swap(). Funktionen swap(T& variabel 1, T& variabel 2) kalder ved reference, og C++ overbelaster swap() afhængigt af typen af ​​datavariable er også forklaret i denne vejledning.