C++ Std Swap

C Std Swap



«Bytte er handlingen med å utveksle to eller flere ting. Dataene mellom to variabler i programmering kan byttes. Utveksling av ting mellom to personer er mulig i det virkelige liv. Alle to objekters verdier kan byttes ved hjelp av standard bibliotekfunksjonen swap() i C++. Den har blitt plassert under 'utility'-overskriften i C11. Swap()-funksjonen i C++ har en kompleksitet på N for arrays fordi hvert element må byttes individuelt, mens vanskelighetsgraden for funksjonen for konstanter er konstant. Swap()-funksjonen gir en advarsel eller feil hvis noen av variabelelementene mislykkes. Se på funksjonens signatur for std::swap() nedenfor:

Syntaks:

mal < klasse T > tomrom bytte ( T & variabel_1 , T & variabel_2 ) ;

Både verdien av den første variabelen og den andre variabelen, som begge lagrer verdier, skal byttes. Funksjonen bytter bare verdiene til variablene; den har ingen utgang.'







Arbeid med swap()-funksjonen i C++

Byttefunksjonen er implementert i C++ ved å bruke følgende tre linjer.



Mal tomrom bytte ( T & Jeg , T & j ) {
T temp = std :: bevege seg ( Jeg ) ;
Jeg = std :: bevege seg ( j ) ;
j = std :: bevege seg ( temp ) ;
}

Utsagnet 'T temp = std::move(i)'; lager en kopi av elementet 'i' og dupliserer det. Her, 'i = std::move(j)'; kaster de originale elementene i 'i' og lagrer 'i'-kopi av 'j' i stedet for den originale 'j'. Formelen 'j = std:: move(temp)'; lagre 'i' med en klone av temp, og fjern det identiske innholdet i temp. Slett også temp-variabelen etter at swap()-funksjonen er utført.



Eksempel 1: Program ved å bruke std::move Method to Swap

Som vist nedenfor, kan vi bytte to objekter ved å bruke C++11-funksjonen std::move.





#include

#inkluder



mal
tomrom bytte ( T & en , T & b )
{
T temp = std :: bevege seg ( en ) ;
en = std :: bevege seg ( b ) ;
b = std :: bevege seg ( temp ) ;
}
int hoved- ( )
{
std :: vektor liste = { 10 , 12 , 1. 3 , femten , 16 , 17 } ;
int Jeg = 3 , j = 5 ;
bytte ( liste [ Jeg ] , liste [ j ] ) ;
til ( int Jeg : liste ) {
std :: cout << Jeg << ' ' ;
}
komme tilbake 0 ; }

Vi har en mal-erklæring som har et objekt 'T'. Etter det har vi etablert funksjonen som 'bytte'. Funksjonen tar de to parameterne &a og &b, av typen 'T'. Som et resultat av at argumentene T& a, T& b refererer til eller lagrer adressen til den beståtte variabelen og gjelder direkte på dem uten å returnere, kalles swap(T& a, T& b)-funksjonen et kall ved referanse.



Inne i void swap har vi brukt algoritmen for bytte ved å bruke std::move-metoden. Deretter konstruerte vi hovedprogrammet for programmet. Her har vi erklært variabelen 'liste' og initialisert den med listen over numeriske verdier. Vi har satt verdiene for 'i' og 'j' for bytte. Den numeriske verdien ved den andre indeksen ble erstattet med den numeriske verdien ved den femte indeksen. Deretter kalte vi byttefunksjonen og ga 'i' og 'j' indeksene til den for å bytte. For-løkken brukes til å skrive ut byttelisten.

Utgangen viste den endrede listen. Du kan observere den nye genererte listen byttet verdien i henhold til spesifiserte indekser.

Eksempel 2: Program ved å bruke std::swap metode for å bytte

Å bruke std::swap-mekanismen som finnes i verktøyhodet (i C++11) er den vanlige løsningen. To objekters verdier byttes for å få det til å fungere.

#include

#inkluder

#inkludere



int hoved- ( )
{
std :: vektorarr = { 3 , 6 , 9 , femten , 1. 3 } ;
int Jeg = 3 , j = 4 ;

std :: bytte ( arr [ Jeg ] , arr [ j ] ) ;

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

komme tilbake 0 ;
}

Ved å importere overskriftsfilen får vi tilgang til byttefunksjonen i programmet vårt. Her har vi inkludert overskriftsfilen med to viktige biblioteker. Deretter har vi etablert int hovedmetoden. Inne i programmets hoved har vi erklært vektoren ved å lage variabelen 'arr.' Variabelen 'arr' initialiseres med de fem elementene i heltallet. Indeksposisjonene er tilordnet 'i' og 'j' for bytte. Variablene 'i' og 'j' sendes deretter til std::swap-metoden for bytte av verdien til den spesifiserte indeksen. Med for-løkken har vi skrevet ut de byttede matrisene.

Listen oppnådd etter bytteoperasjonen ved å bruke std::swap-metoden vises som følger:

Eksempel 3: Program ved å bruke std::iter_swap metode for å bytte

Bruk av std::iter_swap-algoritmen, som er oppført i overskriften for algoritmen, er et tilleggsalternativ. Måten den fungerer på er ved å bytte verdiene til objektene som de angitte iteratorene peker til.

#include

#inkluder

#inkluder

#include



int hoved- ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int Jeg = 0 , j = 4 ;
auto itr1 = std :: neste ( en ting. begynne ( ) , Jeg ) ;
auto itr2 = std :: neste ( en ting. begynne ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
til ( int Jeg : en ting ) {
std :: cout << Jeg << ' ' ;
}
komme tilbake 0 ;
}

Til programmets hovedmetode har vi erklært en vektorvariabel 'vec' og tildelt den en vektorliste med tall. Deretter spesifiserte vi indeksposisjonen til variablene 'i' og 'j'. Std::iter_swap-metoden påkalles som tar iter1 og iter2 som et argument. Iter1 og iter2 er deklarert med auto-nøkkelordet og har iterasjonsoperasjonen. For loop-metoden skriver ut de byttede verdiene til vektormatrisen ved utførelse.

Std::iter_swap-metoden byttet ut verdiene til de spesifiserte vektorene.

Eksempel 4: Program for bruk uten midlertidige variabler å bytte

Dette eksemplet viser en ny måte å bytte tall i C++-kode uten bruk av midlertidige variabler.

#include

bruker navneområde std ;

int hoved- ( )
{
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 Etter bytte.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

komme tilbake 0 ; }

La oss undersøke driften av dette programmet. Her har vi deklarert x1 og x2, som i utgangspunktet er satt med henholdsvis tallet. Deretter, ved å bruke formelen x1 = x1+ x2, legger vi til x1 og x2 og setter resultatet i x1. Dette indikerer at x1 er lik 2 pluss 12. Er derfor lik 14. Deretter bruker vi formelen x2 = x1 – x2. Dette indikerer at x2 = 14 – 12. Derfor er x2 nå lik 2. Nok en gang bruker vi formelen x1 = x1 – x2. Dette indikerer at x1 = 14 – 2. Derfor er x1 = 12 på slutten. Som et resultat har tallene blitt byttet.

Tallet byttet før og etter vises på følgende ledetekstskjerm.

Konklusjon

Her går vi over en fullstendig beskrivelse av swap() i C++, bruken av det og noen eksempler som viser hvordan det fungerer. Ved å bruke std:: swap()-funksjonen kan to variables verdier byttes. C++ STL inkluderer en innebygd funksjon kalt std::swap(). Funksjonen swap(T& variabel 1, T& variabel 2) kaller ved referanse, og C++ overbelaster swap() avhengig av typen datavariabler er også forklart i denne opplæringen.