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
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.
#includeanvä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.