C++ Std Swap

C Std Swap



'Swapping är handlingen att byta två eller flera saker. Data mellan två variabler i programmering kan växlas. Utbyte av saker mellan två personer är möjligt i verkliga livet. Alla två objekts värden kan bytas med hjälp av standardbiblioteksfunktionen swap() i C++. Den har placerats under rubriken 'verktyg' i C11. Funktionen swap() i C++ har en komplexitet på N för arrayer eftersom varje element måste bytas individuellt, medan svårigheten för funktionen för konstanter är konstant. Funktionen swap() ger en varning eller ett fel om något av variabelelementen misslyckas. Titta på funktionens signatur för std::swap() nedan:

Syntax:

mall < klass T > tomhet byta ( T & variabel_1 , T & variabel_2 ) ;

Både värdet på den första variabeln och den andra variabeln, som båda lagrar värden, ska bytas. Funktionen växlar bara värdena på variablerna; den har ingen utgång.'







Funktionen swap() fungerar i C++

Bytsfunktionen implementeras i C++ med hjälp av följande tre rader.



Mall tomhet byta ( T & i , T & j ) {
T temp = std :: flytta ( i ) ;
i = std :: flytta ( j ) ;
j = std :: flytta ( temp ) ;
}

Uttrycket 'T temp = std::move(i)'; gör en kopia av elementet 'i' och duplicerar det. Här, 'i = std::move(j)'; kasserar originalobjekten av 'i' och lagrar 'i'-kopian av 'j' i stället för originalet 'j'. Formeln 'j = std:: move(temp)'; spara 'i' med en klon av temp och ta bort det identiska innehållet i temp. Ta också bort temp-variabeln efter att funktionen swap() är klar.



Exempel 1: Programmera med std::move Method till Swap

Som visas nedan kan vi byta två objekt med funktionen C++11 std::move.





#include

#inkludera



mall
tomhet byta ( T & a , T & b )
{
T temp = std :: flytta ( a ) ;
a = std :: flytta ( b ) ;
b = std :: flytta ( temp ) ;
}
int huvud ( )
{
std :: vektor lista = { 10 , 12 , 13 , femton , 16 , 17 } ;
int i = 3 , j = 5 ;
byta ( lista [ i ] , lista [ j ] ) ;
för ( int i : lista ) {
std :: cout << i << ' ' ;
}
lämna tillbaka 0 ; }

Vi har en malldeklaration som har ett objekt 'T'. Efter det har vi etablerat funktionen som 'swap'. Funktionen tar de två parametrarna &a och &b, av typen 'T'. Som ett resultat av att argumenten T& a, T& b hänvisar till eller lagrar adressen för den överförda variabeln och tillämpas direkt på dem utan att returnera, kallas swap(T& a, T& b)-funktionen ett anrop genom referens.



Inuti void swap har vi tillämpat algoritmen för swapping genom att använda std::move-metoden. Sedan konstruerade vi programhuvudet. Här har vi deklarerat variabeln 'lista' och initierat den med listan med numeriska värden. Vi har ställt in värdena för 'i' och 'j' för att byta. Det numeriska värdet på det andra indexet ersattes med det numeriska värdet vid det femte indexet. Sedan kallade vi swap-funktionen och skickade 'i'- och 'j'-indexen till den för att byta. For-slingan används för att skriva ut den utbytta listan.

Utgången visade den modifierade listan. Du kan se den nya genererade listan bytte värdet enligt specificerade index.

Exempel 2: Programmera med std::swap-metod för att byta

Att använda std::swap-mekanismen som finns i verktygshuvudet (i C++11) är den vanliga fixen. Två objekts värden ändras för att de ska fungera.

#include

#inkludera

#inkludera



int huvud ( )
{
std :: vektorarr = { 3 , 6 , 9 , femton , 13 } ;
int i = 3 , j = 4 ;

std :: byta ( arr [ i ] , arr [ j ] ) ;

för ( int i : arr ) {
std :: cout << i << ' ' ;
}

lämna tillbaka 0 ;
}

Genom att importera rubrikfilen kan vi komma åt swap-funktionen i vårt program. Här har vi inkluderat rubrikfilen med ytterligare två viktiga bibliotek. Sedan har vi etablerat int main-metoden. Inuti programmets huvudsida har vi deklarerat vektorn genom att skapa variabeln 'arr.' Variabeln 'arr' initieras med de fem elementen i heltal. Indexpositionerna tilldelas 'i' och 'j' för att byta. Variablerna 'i' och 'j' skickas sedan till std::swap-metoden för att byta värdet på det angivna indexet. Med for-loopen har vi skrivit ut de utbytta arrayerna.

Listan som erhölls efter bytesoperationen genom att använda std::swap-metoden visas enligt följande:

Exempel 3: Programmera med std::iter_swap metod för att byta

Användning av std::iter_swap-algoritmen, som är listad i algoritmens rubrik, är ett ytterligare alternativ. Sättet det fungerar på är genom att byta värden för de objekt som de medföljande iteratorerna pekar på.

#include

#inkludera

#inkludera

#inkludera



int huvud ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
bil itr1 = std :: Nästa ( en sak. Börja ( ) , i ) ;
bil itr2 = std :: Nästa ( en sak. Börja ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
för ( int i : en sak ) {
std :: cout << i << ' ' ;
}
lämna tillbaka 0 ;
}

Till programmets huvudmetod har vi deklarerat en vektorvariabel 'vec' och tilldelat den en vektorlista med nummer. Sedan specificerade vi indexpositionen till variablerna 'i' och 'j'. Metoden std::iter_swap anropas som tar iter1 och iter2 som argument. Iter1 och iter2 deklareras med nyckelordet auto och har iterationsoperationen. Metoden for loop skriver ut de utbytta värdena för vektormatrisen vid exekvering.

Metoden std::iter_swap bytte framgångsrikt värdena för de angivna vektorerna.

Exempel 4: Program för användning utan temporära variabler att byta

Det här exemplet visar ett nytt sätt att byta nummer i C++-kod utan att använda temporära variabler.

#include

använder namnutrymme std ;

int huvud ( )
{
int x1 = två , x2 = 12 ;
cout << 'Innan du byter.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

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

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

lämna tillbaka 0 ; }

Låt oss undersöka hur detta program fungerar. Här har vi deklarerat x1 och x2, som initialt sätts med numret. Sedan, med hjälp av formeln x1 = x1+ x2, lägger vi till x1 och x2 och sätter resultatet i x1. Detta indikerar att x1 är lika med 2 plus 12. Därför är det nu lika med 14. Sedan tillämpar vi formeln x2 = x1 – x2. Detta indikerar att x2 = 14 – 12. Därför är x2 nu lika med 2. Återigen tillämpar vi formeln x1 = x1 – x2. Detta indikerar att x1 = 14 – 2. Därför är x1 = 12 i slutet. Som ett resultat har siffrorna ändrats.

Numret som byttes före och efter visas på följande uppmaningsskärm.

Slutsats

Här går vi igenom en fullständig beskrivning av swap() i C++, dess användning och några exempel som visar hur det fungerar. Genom att använda std:: swap()-funktionen kan två variablers värden ändras. C++ STL innehåller en inbyggd funktion som kallas std::swap(). Funktionen swap(T& variabel 1, T& variabel 2) anropar genom referens, och C++ överlastar swap() beroende på typen av datavariabler förklaras också i denna handledning.