C++ Std Swap

C Std Swap

'Vaihtaminen on kahden tai useamman asian vaihtamista. Ohjelmoinnin kahden muuttujan välistä dataa voidaan vaihtaa. Asioiden vaihto kahden ihmisen välillä on mahdollista tosielämässä. Minkä tahansa kahden objektin arvot voidaan vaihtaa C++:n vakiokirjastofunktiolla swap(). Se on sijoitettu C11:n 'apuohjelma'-otsikon alle. C++:n swap()-funktion monimutkaisuus on N taulukoille, koska jokainen elementti on vaihdettava erikseen, kun taas vakioiden funktion vaikeus on vakio. Swap()-funktio antaa varoituksen tai virheen, jos jokin muuttujaelementeistä epäonnistuu. Katso alta funktion allekirjoitus std::swap():lle:

Syntaksi:

sapluuna < luokka T > mitätön vaihtaa ( T & muuttuja_1 , T & muuttuja_2 ) ;

Sekä ensimmäisen että toisen muuttujan arvot, jotka molemmat tallentavat arvoja, on vaihdettava. Funktio vain vaihtaa muuttujien arvoja; sillä ei ole tulosta.'







Swap()-funktion toiminta C++:ssa

Swap-toiminto on toteutettu C++:ssa käyttämällä seuraavia kolmea riviä.



Sapluuna mitätön vaihtaa ( T & i , T & j ) {
T temp = std :: liikkua ( i ) ;
i = std :: liikkua ( j ) ;
j = std :: liikkua ( temp ) ;
}

Lause 'T temp = std::move(i)'; tekee kopion elementistä 'i' ja monistaa sen. Tässä 'i = std::move(j)'; hylkää 'i':n alkuperäiset kohteet ja tallentaa 'j':n 'i'-kopion alkuperäisen 'j':n tilalle. Kaava 'j = std:: move(temp)'; tallenna 'i' temp-kloonilla ja poista temp-arvon identtinen sisältö. Poista myös temp-muuttuja, kun swap()-funktio on suoritettu.



Esimerkki 1: Ohjelmoi käyttämällä std::move-menetelmää Swap-tilaan

Kuten alla osoitetaan, voimme vaihtaa kaksi objektia käyttämällä C++11-ominaisuutta std::move.





#include

#sisällytä



sapluuna
mitätön vaihtaa ( T & a , T & b )
{
T temp = std :: liikkua ( a ) ;
a = std :: liikkua ( b ) ;
b = std :: liikkua ( temp ) ;
}
int pää ( )
{
std :: vektori lista = { 10 , 12 , 13 , viisitoista , 16 , 17 } ;
int i = 3 , j = 5 ;
vaihtaa ( lista [ i ] , lista [ j ] ) ;
varten ( int i : lista ) {
std :: cout << i << '' ;
}
palata 0 ; }

Meillä on malliilmoitus, jossa on objekti 'T'. Sen jälkeen olemme perustaneet toiminnon 'swapiksi'. Funktio ottaa kaksi parametria &a ja &b, tyyppiä 'T'. Sen seurauksena, että argumentit T& a, T& b viittaavat tai tallentavat välitetyn muuttujan osoitteen ja koskevat niitä suoraan ilman paluuta, swap(T& a, T& b)-funktiota kutsutaan viittauskutsuksi.



Void swapin sisällä olemme käyttäneet swap-algoritmia käyttämällä std::move-menetelmää. Sitten rakensimme ohjelman pääosan. Täällä olemme ilmoittaneet muuttujan 'list' ja alustaneet sen numeeristen arvojen luettelolla. Olemme asettanut arvot 'i' ja 'j' vaihtoa varten. Toisessa indeksissä oleva numeerinen arvo korvattiin viidennen indeksin numeerisella arvolla. Sitten kutsuimme swap-funktiota ja välitimme 'i'- ja 'j'-indeksit sille vaihtamista varten. For-silmukkaa käytetään vaihdetun luettelon tulostamiseen.

Tulos näyttää muokatun luettelon. Voit tarkkailla luodun uuden luettelon vaihtaneen arvon määritettyjen indeksien mukaan.

Esimerkki 2: Ohjelmoi std::swap-menetelmällä Swap

Apuohjelman otsikossa (C++11:ssä) olevan std::swap-mekanismin käyttäminen on tavallinen korjaus. Kahden kohteen arvoja vaihdetaan, jotta se toimisi.

#include

#sisällytä

#sisällytä



int pää ( )
{
std :: vectorarr = { 3 , 6 , 9 , viisitoista , 13 } ;
int i = 3 , j = 4 ;

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

varten ( int i : arr ) {
std :: cout << i << '' ;
}

palata 0 ;
}

Tuomalla otsikkotiedoston voimme käyttää ohjelmamme swap-toimintoa. Tässä olemme sisällyttäneet otsikkotiedoston kahteen tärkeämpään kirjastoon. Sitten olemme määrittäneet int-päämenetelmän. Ohjelman pääosassa olemme ilmoittaneet vektorin luomalla muuttujan 'arr'. Muuttuja 'arr' alustetaan kokonaisluvun viidellä elementillä. Indeksipaikat on määritetty 'i'- ja 'j'-merkeille vaihtamista varten. Muuttujat 'i' ja 'j' välitetään sitten std::swap-menetelmään määritetyn indeksin arvon vaihtamiseksi. For-silmukalla olemme tulostaneet vaihdetut taulukot.

Vaihtotoimenpiteen jälkeen std::swap-menetelmällä saatu luettelo näytetään seuraavasti:

Esimerkki 3: Ohjelmoi vaihtamiseen käyttämällä std::iter_swap-menetelmää

std::iter_swap-algoritmin käyttö, joka on lueteltu algoritmin otsikossa, on lisävaihtoehto. Se toimii vaihtamalla niiden objektien arvoja, joihin tarjotut iteraattorit osoittavat.

#include

#sisällytä

#include

#include



int pää ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
auto itr1 = std :: Seuraava ( asia. alkaa ( ) , i ) ;
auto itr2 = std :: Seuraava ( asia. alkaa ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
varten ( int i : asia ) {
std :: cout << i << '' ;
}
palata 0 ;
}

Ohjelman päämenetelmälle olemme ilmoittaneet vektorimuuttujan 'vec' ja määrittäneet sille vektoriluettelon numeroista. Sitten määritimme indeksin sijainnin muuttujille 'i' ja 'j'. Käytetään std::iter_swap-metodia, joka käyttää argumentteja iter1 ja iter2. Iter1 ja iter2 ilmoitetaan auto-avainsanalla ja niillä on iterointitoiminto. For loop -menetelmä tulostaa vektoritaulukon vaihdetut arvot suorituksen yhteydessä.

Metodi std::iter_swap vaihtoi onnistuneesti määritettyjen vektorien arvot.

Esimerkki 4: Ohjelma käyttää ilman väliaikaisia ​​muuttujia vaihdettavaksi

Tämä esimerkki näyttää uuden tavan vaihtaa numeroita C++-koodissa ilman väliaikaisten muuttujien käyttöä.

#include

käyttäen nimiavaruutta std ;

int pää ( )
{
int x1 = kaksi , x2 = 12 ;
cout << 'Ennen vaihtoa.' << endl ;
cout << 'x1 =' << x1 << ', x2 = ' << x2 << endl ;

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

cout << ' \n Vaihdon jälkeen.' << endl ;
cout << 'x1 =' << x1 << ', x2 = ' << x2 << endl ;

palata 0 ; }

Tarkastellaan tämän ohjelman toimintaa. Tässä olemme ilmoittaneet x1 ja x2, jotka on alun perin asetettu vastaavasti numerolla. Sitten kaavalla x1 = x1+ x2 lisäämme x1 ja x2 ja laitamme tuloksen x1:een. Tämä osoittaa, että x1 on yhtä kuin 2 plus 12. Siksi nyt on 14. Sitten sovelletaan kaavaa x2 = x1 – x2. Tämä osoittaa, että x2 = 14 – 12. Siksi x2 on nyt yhtä kuin 2. Käytämme vielä kerran kaavaa x1 = x1 – x2. Tämä osoittaa, että x1 = 14 – 2. Siksi x1 = 12 lopussa. Tämän seurauksena numeroita on vaihdettu.

Ennen ja jälkeen vaihdettu numero näkyy seuraavassa kehotenäytössä.

Johtopäätös

Tässä käymme läpi täydellisen kuvauksen swap():sta C++:ssa, sen käytöstä ja joitain esimerkkejä, jotka osoittavat sen toiminnan. Käyttämällä std:: swap()-funktiota voit vaihtaa kahden muuttujan arvoa. C++ STL sisältää sisäänrakennetun funktion nimeltä std::swap(). Tässä opetusohjelmassa selitetään myös swap(T&-muuttuja 1, T&-muuttuja 2)-funktio kutsuu viitteellä ja C++-ylikuormitus swap() datamuuttujien tyypistä riippuen.