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
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.
#includegamit 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.