C++ Std zamjena

C Std Zamjena



“Zamjena je čin razmjene dviju ili više stvari. Podaci između dvije varijable u programiranju se mogu prebacivati. Razmjena stvari između dvije osobe moguća je u stvarnom životu. Vrijednosti bilo koja dva objekta mogu se zamijeniti pomoću standardne bibliotečke funkcije swap() u C++. Postavljen je pod zaglavlje 'utility' u C11. Funkcija swap() u C++ ima složenost od N za nizove jer se svaki element mora zasebno mijenjati, dok je težina funkcije za konstante konstantna. Funkcija swap() daje upozorenje ili grešku ako bilo koji od varijabilnih elemenata ne uspije. Pogledajte potpis funkcije za std::swap() u nastavku:

Sintaksa:

šablona < klasa T > poništiti zamijeniti ( T i varijabla_1 , T i varijabla_2 ) ;

I vrijednost prve varijable i druge varijable, koje obje pohranjuju vrijednosti, moraju se zamijeniti. Funkcija samo mijenja vrijednosti varijabli; nema izlaza.”







Rad swap() funkcije u C++

Funkcija zamjene implementirana je u C++ pomoću sljedeća tri retka.



Predložak poništiti zamijeniti ( T i ja , T i j ) {
T temp = std :: potez ( ja ) ;
ja = std :: potez ( j ) ;
j = std :: potez ( temp ) ;
}

Izjava “T temp = std::move(i)”; pravi kopiju elementa “i” i duplicira je. Ovdje, “i = std::move(j)”; odbacuje izvorne stavke 'i' i pohranjuje 'i' kopiju 'j' umjesto izvornog 'j'. Formula “j = std:: move(temp)”; spremite “i” s klonom temp i uklonite identičan sadržaj temp. Također, izbrišite privremenu varijablu nakon dovršetka izvođenja funkcije swap().



Primjer 1: Program koji koristi metodu std::move za zamjenu

Kao što je prikazano u nastavku, možemo zamijeniti dva objekta koristeći C++11 značajku std::move.





#include

#uključi



šablona
poništiti zamijeniti ( T i a , T i b )
{
T temp = std :: potez ( a ) ;
a = std :: potez ( b ) ;
b = std :: potez ( temp ) ;
}
int glavni ( )
{
std :: vektor popis = { 10 , 12 , 13 , petnaest , 16 , 17 } ;
int ja = 3 , j = 5 ;
zamijeniti ( popis [ ja ] , popis [ j ] ) ;
za ( int ja : popis ) {
std :: cout << ja << ' ' ;
}
povratak 0 ; }

Imamo deklaraciju predloška koja ima objekt 'T'. Nakon toga uspostavili smo funkciju kao 'swap'. Funkcija uzima dva parametra &a i &b, tipa 'T'. Kao rezultat argumenata T& a, T& b koji referenciraju ili pohranjuju adresu proslijeđene varijable i izravno se primjenjuju na njih bez vraćanja, funkcija swap(T& a, T& b) naziva se pozivom po referenci.



Unutar void swapa primijenili smo algoritam swapa pomoću metode std::move. Zatim smo konstruirali glavni program. Ovdje smo deklarirali varijablu 'list' i inicijalizirali je popisom numeričkih vrijednosti. Postavili smo vrijednosti za “i” i “j” za zamjenu. Numerička vrijednost koja se nalazi na drugom indeksu zamijenjena je numeričkom vrijednošću na petom indeksu. Zatim smo pozvali funkciju swap i proslijedili joj indekse 'i' i 'j' za swap. For petlja se koristi za ispis zamijenjene liste.

Izlaz je prikazao modificirani popis. Možete vidjeti kako novi generirani popis mijenja vrijednost prema navedenim indeksima.

Primjer 2: Program koji koristi std::swap metodu za zamjenu

Korištenje mehanizma std::swap koji se nalazi u zaglavlju uslužnog programa (u C++11) uobičajeni je popravak. Vrijednosti dviju objekata mijenjaju se kako bi funkcionirao.

#include

#uključi

#include



int glavni ( )
{
std :: vektorarr = { 3 , 6 , 9 , petnaest , 13 } ;
int ja = 3 , j = 4 ;

std :: zamijeniti ( arr [ ja ] , arr [ j ] ) ;

za ( int ja : arr ) {
std :: cout << ja << ' ' ;
}

povratak 0 ;
}

Uvozom datoteke zaglavlja možemo pristupiti swap funkciji u našem programu. Ovdje smo uključili datoteku zaglavlja s još dvije važne biblioteke. Zatim smo uspostavili int main metodu. Unutar glavnog programa, deklarirali smo vektor stvaranjem varijable 'arr.' Varijabla 'arr' inicijalizirana je s pet elemenata cijelog broja. Indeksne pozicije dodijeljene su 'i' i 'j' za zamjenu. Varijable “i” i “j” zatim se prosljeđuju metodi std::swap za zamjenu vrijednosti navedenog indeksa. S for petljom, ispisali smo zamijenjene nizove.

Popis dobiven nakon operacije zamjene pomoću metode std::swap prikazuje se na sljedeći način:

Primjer 3: Program koji koristi std::iter_swap metodu za zamjenu

Korištenje algoritma std::iter_swap, koji je naveden u zaglavlju algoritma, dodatna je opcija. Način na koji funkcionira je prebacivanje vrijednosti objekata na koje navedeni iteratori pokazuju.

#include

#uključi

#include

#include



int glavni ( )
{
std :: vektorvec = { 64 , 61 , 62 , 63 , 60 } ;
int ja = 0 , j = 4 ;
auto itr1 = std :: Sljedeći ( stvar. početi ( ) , ja ) ;
auto itr2 = std :: Sljedeći ( stvar. početi ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
za ( int ja : stvar ) {
std :: cout << ja << ' ' ;
}
povratak 0 ;
}

Glavnoj metodi programa deklarirali smo vektorsku varijablu 'vec' i dodijelili joj vektorsku listu brojeva. Zatim smo odredili poziciju indeksa za varijable “i” i “j”. Poziva se metoda std::iter_swap koja uzima iter1 i iter2 kao argument. Iter1 i iter2 deklarirani su ključnom riječi auto i imaju operaciju iteracije. Metoda for petlje ispisuje zamijenjene vrijednosti vektorskog polja nakon izvođenja.

Metoda std::iter_swap uspješno je zamijenila vrijednosti navedenih vektora.

Primjer 4: Program korištenja bez privremenih varijabli za zamjenu

Ovaj primjer pokazuje novi način zamjene brojeva u C++ kodu bez upotrebe privremenih varijabli.

#include

koristeći prostor imena std ;

int glavni ( )
{
int x1 = dva , x2 = 12 ;
cout << 'Prije zamjene.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

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

cout << ' \n Nakon zamjene.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

povratak 0 ; }

Ispitajmo rad ovog programa. Ovdje smo deklarirali x1 i x2, koji su inicijalno postavljeni s brojem. Zatim pomoću formule x1 = x1+ x2 zbrajamo x1 i x2 i rezultat stavljamo u x1. To znači da je x1 jednako 2 plus 12. Dakle, sada je jednako 14. Zatim primjenjujemo formulu x2 = x1 – x2. To znači da je x2 = 14 – 12. Stoga je x2 sada jednako 2. Još jednom primjenjujemo formulu x1 = x1 – x2. To znači da je x1 = 14 – 2. Dakle, x1 = 12 na kraju. Kao rezultat toga, brojevi su zamijenjeni.

Broj zamijenjen prije i poslije prikazan je na sljedećem zaslonu.

Zaključak

Ovdje ćemo pregledati potpuni opis swap() u C++, njegovu upotrebu i neke primjere koji pokazuju kako funkcionira. Pomoću funkcije std:: swap() mogu se mijenjati vrijednosti dviju varijabli. C++ STL uključuje ugrađenu funkciju koja se zove std::swap(). Funkcija swap(T& varijabla 1, T& varijabla 2) poziva po referenci, a C++ preopterećenja swap() ovisno o vrsti podatkovnih varijabli također su objašnjeni u ovom vodiču.