C++ Std Swap

C Std Swap



'Ang pagpapalit ay ang pagkilos ng pagpapalitan ng dalawa o higit pang mga bagay. Ang data sa pagitan ng dalawang variable sa programming ay maaaring ilipat. Ang pagpapalitan ng mga bagay sa pagitan ng dalawang tao ay posible sa totoong buhay. Ang anumang halaga ng dalawang bagay ay maaaring mapalitan gamit ang karaniwang library function na swap() sa C++. Ito ay inilagay sa ilalim ng 'utility' na header sa C11. Ang swap() function sa C++ ay may kumplikadong N para sa mga arrays dahil ang bawat elemento ay dapat palitan nang paisa-isa, habang ang kahirapan ng function para sa mga constant ay pare-pareho. Ang swap() function ay nagbibigay ng babala o error kung ang alinman sa mga variable na elemento ay nabigo. Tingnan ang pirma ng function para sa std::swap() sa ibaba:

Syntax:

template < klase T > walang bisa magpalit ( T at variable_1 , T at variable_2 ) ;

Parehong ang halaga ng unang variable at ang pangalawang variable, na parehong mga halaga ng store, ay dapat palitan. Pinapalitan lang ng function ang mga halaga ng mga variable; wala itong output.'







Paggawa ng swap() Function sa C++

Ang swap function ay ipinatupad sa C++ gamit ang sumusunod na tatlong linya.



Template walang bisa magpalit ( T at i , T at j ) {
T temp = std :: gumalaw ( i ) ;
i = std :: gumalaw ( j ) ;
j = std :: gumalaw ( temp ) ;
}

Ang pahayag na 'T temp = std::move(i)'; gumagawa ng kopya ng elementong 'i' at kino-duplicate ito. Dito, 'i = std::move(j)'; itinatapon ang orihinal na mga item ng 'i' at iniimbak ang 'i' na kopya ng 'j' sa halip ng orihinal na 'j'. Ang formula na 'j = std:: move(temp)'; i-save ang 'i' gamit ang isang clone ng temp, at alisin ang magkaparehong nilalaman ng temp. Gayundin, Tanggalin ang temp variable pagkatapos makumpleto ang swap() function execution.



Halimbawa 1: Programa Gamit ang std::move Method to Swap

Gaya ng ipinakita sa ibaba, maaari tayong magpalit ng dalawang bagay gamit ang tampok na C++11 std::move.





#include

#include



template
walang bisa magpalit ( T at a , T at b )
{
T temp = std :: gumalaw ( a ) ;
a = std :: gumalaw ( b ) ;
b = std :: gumalaw ( temp ) ;
}
int pangunahing ( )
{
std :: vector listahan = { 10 , 12 , 13 , labinlima , 16 , 17 } ;
int i = 3 , j = 5 ;
magpalit ( listahan [ i ] , listahan [ j ] ) ;
para sa ( int i : listahan ) {
std :: cout << i << '' ;
}
bumalik 0 ; }

Mayroon kaming template na deklarasyon na mayroong object na 'T'. Pagkatapos nito, itinatag namin ang function bilang 'swap'. Kinukuha ng function ang dalawang parameter na &a at &b, ng uri na “T”. Bilang resulta ng mga argumentong T&a, T&b na tumutukoy o nag-iimbak ng address ng naipasa na variable at direktang inilalapat sa kanila nang hindi bumabalik, ang swap(T& a, T&b) na function ay tinatawag na isang tawag sa pamamagitan ng sanggunian.



Sa loob ng void swap, inilapat namin ang algorithm ng swapping sa pamamagitan ng paggamit ng std::move method. Pagkatapos, itinayo namin ang pangunahing programa. Dito, idineklara namin ang variable na 'listahan' at sinimulan ito sa listahan ng mga numerong halaga. Itinakda namin ang mga halaga para sa 'i' at 'j' para sa pagpapalit. Ang numeric na halaga na matatagpuan sa pangalawang index ay pinalitan ng numeric na halaga sa ikalimang index. Pagkatapos, tinawag namin ang swap function at ipinasa ang 'i' at 'j' na mga index dito para sa pagpapalit. Ang para sa loop ay ginagamit para sa pag-print ng swapped listahan.

Ang output ay nagpakita ng binagong listahan. Maaari mong obserbahan ang bagong listahan na nabuo na pinalitan ang halaga ayon sa mga tinukoy na index.

Halimbawa 2: Programa Gamit ang std::swap Paraan para Magpalit

Ang paggamit ng std::swap na mekanismo na makikita sa utility header (sa C++11) ay ang karaniwang pag-aayos. Ang mga halaga ng dalawang bagay ay inililipat upang gawin itong gumana.

#include

#include

#include



int pangunahing ( )
{
std :: vectorarr = { 3 , 6 , 9 , labinlima , 13 } ;
int i = 3 , j = 4 ;

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

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

bumalik 0 ;
}

Sa pamamagitan ng pag-import ng header file , maa-access namin ang swap function sa aming program. Dito, isinama namin ang header file na may dalawang mas mahalagang library. Pagkatapos, naitatag namin ang int pangunahing pamamaraan. Sa loob ng pangunahing programa, idineklara namin ang vector sa pamamagitan ng paglikha ng variable na 'arr.' Ang variable na 'arr' ay sinisimulan sa limang elemento ng integer. Ang mga posisyon ng index ay itinalaga sa 'i' at 'j' para sa pagpapalit. Ang mga variable na 'i' at 'j' ay ipinapasa sa std::swap method para sa swap ng value ng tinukoy na index. Gamit ang for loop, nai-print namin ang mga pinagpalit na array.

Ang listahang nakuha pagkatapos ng pagpapalit ng pagpapalit sa pamamagitan ng std::swap method ay ipinapakita bilang mga sumusunod:

Halimbawa 3: Programa Gamit ang std::iter_swap Paraan sa Pagpalit

Ang paggamit ng std::iter_swap algorithm, na nakalista sa header para sa algorithm, ay isang karagdagang opsyon. Ang paraan ng pagpapatakbo nito ay sa pamamagitan ng pagpapalit ng mga halaga ng mga bagay na itinuturo ng mga ibinigay na iterator.

#include

#include

#isama ang

#include



int pangunahing ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
sasakyan itr1 = std :: susunod ( isang bagay. magsimula ( ) , i ) ;
sasakyan itr2 = std :: susunod ( isang bagay. magsimula ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
para sa ( int i : isang bagay ) {
std :: cout << i << '' ;
}
bumalik 0 ;
}

Sa pangunahing pamamaraan ng programa, nagdeklara kami ng vector variable na 'vec' at itinalaga ito ng vector list ng mga numero. Pagkatapos, tinukoy namin ang posisyon ng index sa variable na 'i' at 'j'. Ang std::iter_swap method ay ginagamit na kumukuha ng iter1 at iter2 bilang argumento. Ang iter1 at iter2 ay idineklara gamit ang auto keyword at mayroong operasyon ng pag-ulit. Ang paraang para sa loop ay nagpi-print ng mga swapped value ng vector array kapag naisakatuparan.

Matagumpay na napalitan ng paraan ng std::iter_swap ang mga halaga ng mga tinukoy na vector.

Halimbawa 4: Programa ng Paggamit nang Walang Pansamantalang mga Variable para Magpalit

Ang halimbawang ito ay nagpapakita ng bagong paraan ng pagpapalit ng mga numero sa C++ code nang walang paggamit ng mga pansamantalang variable.

#include

gamit ang namespace std ;

int pangunahing ( )
{
int x1 = dalawa , x2 = 12 ;
cout << 'Bago magpalit.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

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

cout << ' \n Pagkatapos magpalit.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

bumalik 0 ; }

Suriin natin ang pagpapatakbo ng programang ito. Dito, idineklara namin ang x1 at x2, na sa simula ay itinakda kasama ang numero, ayon sa pagkakabanggit. Pagkatapos, gamit ang formula x1 = x1+ x2, idinagdag namin ang x1 at x2 at ilagay ang resulta sa x1. Ito ay nagpapahiwatig na ang x1 ay katumbas ng 2 plus 12. Samakatuwid, ngayon ay katumbas ng 14. Pagkatapos, inilalapat namin ang formula x2 = x1 – x2. Ipinapahiwatig nito na ang x2 = 14 – 12. Samakatuwid, ang x2 ay katumbas na ngayon ng 2. Muli, inilalapat namin ang formula x1 = x1 – x2. Ito ay nagpapahiwatig na x1 = 14 – 2. Samakatuwid, x1 = 12 sa dulo. Bilang resulta, ang mga numero ay inilipat.

Ang numero na pinalitan bago at pagkatapos ay ipinapakita sa sumusunod na prompt screen.

Konklusyon

Dito, tatalakayin natin ang buong paglalarawan ng swap() sa C++, ang paggamit nito, at ilang halimbawa na nagpapakita kung paano ito gumagana. Sa pamamagitan ng paggamit ng std:: swap() function, maaaring ilipat ang mga value ng dalawang variable. Ang C++ STL ay may kasamang built-in na function na tinatawag na std::swap(). Ang swap(T& variable 1, T& variable 2) ay tumatawag sa pamamagitan ng reference, at ang C++ overloads swap() depende sa uri ng data variable ay ipinapaliwanag din sa tutorial na ito.