C++ standarta mijmaiņa

C Standarta Mijmaina

“Apmaiņa ir divu vai vairāku lietu apmaiņa. Datus starp diviem programmēšanas mainīgajiem var pārslēgt. Lietu apmaiņa starp divām personām ir iespējama reālajā dzīvē. Jebkuru divu objektu vērtības var apmainīt, izmantojot standarta bibliotēkas funkciju swap() programmā C++. Tas ir ievietots C11 zem galvenes “lietderība”. Swap() funkcijai C++ ir N sarežģītība masīviem, jo ​​katrs elements ir jāmaina atsevišķi, savukārt funkcijas grūtības konstantēm ir nemainīgas. Funkcija swap () izdod brīdinājumu vai kļūdu, ja kāds no mainīgajiem elementiem neizdodas. Tālāk skatiet funkcijas std::swap() parakstu:

Sintakse:

veidne < T klase > nederīgs mijmaiņa ( T & mainīgais_1 , T & mainīgais_2 ) ;

Ir jāmaina gan pirmā mainīgā, gan otrā mainīgā vērtība, kas abos glabā vērtības. Funkcija vienkārši pārslēdz mainīgo lielumu vērtības; tam nav izvades.'







Swap() funkcijas darbība C++

Mijmaiņas funkcija ir ieviesta C++, izmantojot šādas trīs rindas.



Veidne nederīgs mijmaiņa ( T & i , T & j ) {
T temp = std :: kustēties ( i ) ;
i = std :: kustēties ( j ) ;
j = std :: kustēties ( temp ) ;
}

Paziņojums “T temp = std::move(i)”; izveido elementa “i” kopiju un dublē to. Šeit “i = std::move(j)”; izmet 'i' oriģinālos vienumus un saglabā 'j' 'i' kopiju oriģinālā 'j' vietā. Formula “j = std:: move(temp)”; saglabājiet “i” ar temp klonu un noņemiet identisku tempa saturu. Tāpat izdzēsiet temp mainīgo pēc tam, kad ir pabeigta swap() funkcijas izpilde.



1. piemērs: Programmēšana, izmantojot std::move metodi uz Swap

Kā parādīts zemāk, mēs varam apmainīt divus objektus, izmantojot C++11 funkciju std::move.





#include

#iekļaut



veidne
nederīgs mijmaiņa ( T & a , T & b )
{
T temp = std :: kustēties ( a ) ;
a = std :: kustēties ( b ) ;
b = std :: kustēties ( temp ) ;
}
starpt galvenais ( )
{
std :: vektors sarakstu = { 10 , 12 , 13 , piecpadsmit , 16 , 17 } ;
starpt i = 3 , j = 5 ;
mijmaiņa ( sarakstu [ i ] , sarakstu [ j ] ) ;
priekš ( starpt i : sarakstu ) {
std :: cout << i << '' ;
}
atgriezties 0 ; }

Mums ir veidnes deklarācija ar objektu “T”. Pēc tam mēs esam izveidojuši funkciju kā “swap”. Funkcija izmanto divus “T” tipa parametrus &a un &b. Argumentu T& a, T&b rezultātā, atsaucoties vai saglabājot nodotā ​​mainīgā adresi un piemērojot tiem tieši bez atgriešanās, funkcija swap(T& a, T& b) tiek saukta par izsaukumu ar atsauci.



Tukšuma mijmaiņas ietvaros mēs esam pielietojuši mijmaiņas algoritmu, izmantojot metodi std::move. Pēc tam mēs izveidojām programmas galveno. Šeit mēs esam deklarējuši mainīgo “list” un inicializējuši to ar skaitlisko vērtību sarakstu. Mēs esam iestatījuši “i” un “j” vērtības apmaiņai. Skaitliskā vērtība, kas atrodas otrajā rādītājā, tika aizstāta ar skaitlisko vērtību piektajā indeksā. Pēc tam mēs izsaucām mijmaiņas funkciju un nosūtījām tai indeksus “i” un “j”, lai veiktu apmaiņu. For cilpa tiek izmantota apmainītā saraksta drukāšanai.

Izvadē tika parādīts modificētais saraksts. Varat novērot, ka jaunais ģenerēts saraksts ir apmainīts ar vērtību atbilstoši norādītajiem indeksiem.

2. piemērs: Programma, kas izmanto std::swap metodi, lai apmainītu

Parastais labojums ir std::swap mehānisma izmantošana, kas atrodas utilīta galvenē (C++11 valodā). Divu objektu vērtības tiek pārslēgtas, lai tas darbotos.

#include

#iekļaut

#include



starpt galvenais ( )
{
std :: vektorarr = { 3 , 6 , 9 , piecpadsmit , 13 } ;
starpt i = 3 , j = 4 ;

std :: mijmaiņa ( arr [ i ] , arr [ j ] ) ;

priekš ( starpt i : arr ) {
std :: cout << i << '' ;
}

atgriezties 0 ;
}

Importējot galvenes failu , mēs varam piekļūt mūsu programmas mijmaiņas funkcijai. Šeit mēs esam iekļāvuši galvenes failu ar vēl divām svarīgām bibliotēkām. Pēc tam mēs esam izveidojuši int galveno metodi. Programmas galvenajā daļā mēs esam deklarējuši vektoru, izveidojot mainīgo “arr”. Mainīgais “arr” tiek inicializēts ar pieciem vesela skaitļa elementiem. Indeksa pozīcijas tiek piešķirtas “i” un “j” apmaiņai. Mainīgie lielumi “i” un “j” pēc tam tiek nodoti std::swap metodei, lai apmainītu norādītā indeksa vērtību. Izmantojot for cilpu, mēs esam izdrukājuši apmainītos masīvus.

Saraksts, kas iegūts pēc mijmaiņas operācijas, izmantojot std::swap metodi, tiek parādīts šādi:

3. piemērs. Programma, kas izmanto std::iter_swap metodi, lai apmainītu

Papildu opcija ir std::iter_swap algoritma izmantošana, kas ir norādīts algoritma galvenē. Tas darbojas, pārslēdzot to objektu vērtības, uz kuriem norādītie iteratori norāda.

#include

#iekļaut

#include

#include



starpt galvenais ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
starpt i = 0 , j = 4 ;
auto itr1 = std :: Nākamais ( lieta. sākt ( ) , i ) ;
auto itr2 = std :: Nākamais ( lieta. sākt ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
priekš ( starpt i : lieta ) {
std :: cout << i << '' ;
}
atgriezties 0 ;
}

Programmas galvenajai metodei mēs esam deklarējuši vektora mainīgo “vec” un piešķīruši tam vektoru skaitļu sarakstu. Pēc tam mēs norādījām indeksa pozīciju mainīgajam “i” un “j”. Tiek izsaukta metode std::iter_swap, kas kā argumentu izmanto iter1 un iter2. Iter1 un iter2 tiek deklarēti ar automātisko atslēgvārdu, un tiem ir iterācijas darbība. For cilpas metode izpildes laikā izdrukā vektoru masīva apmainītās vērtības.

Metode std::iter_swap veiksmīgi apmainīja norādīto vektoru vērtības.

4. piemērs: Programma izmantošanai bez pagaidu mainīgajiem apmaiņai

Šis piemērs parāda jaunu veidu, kā apmainīties ar skaitļiem C++ kodā, neizmantojot pagaidu mainīgos.

#include

izmantojot namespace std ;

starpt galvenais ( )
{
starpt x1 = divi , x2 = 12 ;
cout << 'Pirms maiņas.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

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

cout << ' \n Pēc maiņas.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

atgriezties 0 ; }

Apskatīsim šīs programmas darbību. Šeit mēs esam deklarējuši x1 un x2, kas sākotnēji ir iestatīti attiecīgi ar skaitli. Pēc tam, izmantojot formulu x1 = x1+ x2, mēs pievienojam x1 un x2 un ievietojam rezultātu x1. Tas norāda, ka x1 ir vienāds ar 2 plus 12. Tāpēc tagad ir 14. Tad mēs izmantojam formulu x2 = x1 – x2. Tas norāda, ka x2 = 14 – 12. Tāpēc x2 tagad ir vienāds ar 2. Vēlreiz pielietojam formulu x1 = x1 – x2. Tas norāda, ka x1 = 14 – 2. Tāpēc beigās x1 = 12. Rezultātā numuri ir pārslēgti.

Numurs, kas apmainīts pirms un pēc, tiek parādīts nākamajā uzvednes ekrānā.

Secinājums

Šeit mēs aplūkojam pilnu swap () aprakstu C++ valodā, tā lietojumu un dažus piemērus, kas parāda, kā tas darbojas. Izmantojot funkciju std:: swap(), var pārslēgt divu mainīgo vērtības. C++ STL ietver iebūvētu funkciju std::swap(). Šajā apmācībā ir izskaidrota arī funkcija Swap (T& mainīgais 1, T& mainīgais 2) ar atsauci, un C++ pārslodzes swap () atkarībā no datu mainīgo veida.