C++ Std Swap

C Std Swap



“Verwisselen is het uitwisselen van twee of meer dingen. De gegevens tussen twee variabelen in de programmering kunnen worden geschakeld. De uitwisseling van dingen tussen twee personen is mogelijk in het echte leven. De waarden van twee objecten kunnen worden verwisseld met behulp van de standaardbibliotheekfunctie swap() in C++. Het is geplaatst onder de kop 'utility' in C11. De functie swap() in C++ heeft een complexiteit van N voor arrays omdat elk element afzonderlijk moet worden verwisseld, terwijl de moeilijkheidsgraad van de functie voor constanten constant is. De functie swap() genereert een waarschuwing of fout als een van de variabele elementen faalt. Bekijk de handtekening van de functie voor std::swap() hieronder:

Syntaxis:

sjabloon < klasse T > leegte ruil ( T & variabele_1 , T & variabele_2 ) ;

Zowel de waarde van de eerste variabele als de tweede variabele, die beide waarden opslaan, moeten worden verwisseld. De functie verandert alleen de waarden van de variabelen; het heeft geen output.”







Werking van swap() Functie in C++

De swap-functie is geïmplementeerd in C++ met behulp van de volgende drie regels.



Sjabloon leegte ruil ( T & i , T & j ) {
T temp = soa :: Actie ( i ) ;
i = soa :: Actie ( j ) ;
j = soa :: Actie ( temp ) ;
}

De verklaring 'T temp = std::move(i)'; maakt een kopie van element 'i' en dupliceert het. Hier, 'i = std::move(j)'; verwijdert de originele items van 'i' en slaat de 'i' -kopie van 'j' op in plaats van de originele 'j'. De formule “j = std:: move(temp)”; sla 'i' op met een kloon van temp, en verwijder de identieke inhoud van temp. Verwijder ook de variabele temp nadat de uitvoering van de functie swap() is voltooid.



Voorbeeld 1: Programma met behulp van std::move Method to Swap

Zoals hieronder wordt aangetoond, kunnen we twee objecten verwisselen met behulp van de C++11-functie std::move.





#include

#include



sjabloon
leegte ruil ( T & a , T & b )
{
T temp = soa :: Actie ( a ) ;
a = soa :: Actie ( b ) ;
b = soa :: Actie ( temp ) ;
}
int hoofd ( )
{
soa :: vector lijst = { 10 , 12 , 13 , vijftien , 16 , 17 } ;
int i = 3 , j = 5 ;
ruil ( lijst [ i ] , lijst [ j ] ) ;
voor ( int i : lijst ) {
soa :: cout << i << ' ' ;
}
opbrengst 0 ; }

We hebben een sjabloondeclaratie met een object 'T'. Daarna hebben we de functie als “swap” ingesteld. De functie heeft de twee parameters &a en &b, van het type “T”. Als resultaat van de argumenten T& a, T& b die verwijzen naar of het opslaan van het adres van de doorgegeven variabele en er rechtstreeks op van toepassing zijn zonder terug te keren, wordt de functie swap (T& a, T& b) een aanroep genoemd.



Binnen de void swap hebben we het algoritme van swapping toegepast met behulp van de std::move-methode. Vervolgens hebben we de hoofdprogramma's geconstrueerd. Hier hebben we de variabele 'lijst' gedeclareerd en geïnitialiseerd met de lijst met numerieke waarden. We hebben de waarden voor de 'i' en 'j' voor het omwisselen ingesteld. De numerieke waarde bij de tweede index werd vervangen door de numerieke waarde bij de vijfde index. Vervolgens hebben we de swap-functie aangeroepen en de indexen 'i' en 'j' eraan doorgegeven om te ruilen. De for-lus wordt gebruikt voor het afdrukken van de verwisselde lijst.

De uitvoer toonde de gewijzigde lijst. U kunt zien dat de nieuwe lijst die is gegenereerd, de waarde heeft verwisseld volgens de opgegeven indexen.

Voorbeeld 2: Programmeren met de std::swap-methode om te wisselen

Het gebruik van het std::swap-mechanisme in de header van het hulpprogramma (in C++11) is de gebruikelijke oplossing. De waarden van twee objecten worden verwisseld om het te laten functioneren.

#include

#include

#include



int hoofd ( )
{
soa :: vectorarr = { 3 , 6 , 9 , vijftien , 13 } ;
int i = 3 , j = 4 ;

soa :: ruil ( arr [ i ] , arr [ j ] ) ;

voor ( int i : arr ) {
soa :: cout << i << ' ' ;
}

opbrengst 0 ;
}

Door het header-bestand te importeren, hebben we toegang tot de swap-functie in ons programma. Hier hebben we het headerbestand toegevoegd met nog twee belangrijke bibliotheken. Vervolgens hebben we de int main-methode vastgesteld. In het hoofdprogramma van het programma hebben we de vector gedeclareerd door de variabele 'arr' te maken. De variabele 'arr' wordt geïnitialiseerd met de vijf elementen van het gehele getal. De indexposities worden toegewezen aan de 'i' en 'j' voor swapping. De variabelen 'i' en 'j' worden vervolgens doorgegeven aan de std::swap-methode voor het omwisselen van de waarde van de opgegeven index. Met de for-lus hebben we de verwisselde arrays afgedrukt.

De lijst die is verkregen na het omwisselen met behulp van de std::swap-methode wordt als volgt weergegeven:

Voorbeeld 3: Programma met de std::iter_swap-methode om te ruilen

Het gebruik van het std::iter_swap-algoritme, dat wordt vermeld in de koptekst van het algoritme, is een extra optie. De manier waarop het werkt, is door de waarden te wijzigen van de objecten waarnaar de opgegeven iterators verwijzen.

#include

#include

#include

#include



int hoofd ( )
{
soa :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
auto itr1 = soa :: De volgende ( een ding. beginnen ( ) , i ) ;
auto itr2 = soa :: De volgende ( een ding. beginnen ( ) , j ) ;

soa :: iter_swap ( itr1 , itr2 ) ;
voor ( int i : een ding ) {
soa :: cout << i << ' ' ;
}
opbrengst 0 ;
}

Voor de hoofdmethode van het programma hebben we een vectorvariabele 'vec' gedeclareerd en een vectorlijst met getallen toegewezen. Vervolgens hebben we de indexpositie gespecificeerd voor de variabele 'i' en 'j'. De std::iter_swap methode wordt aangeroepen die de iter1 en iter2 als argument neemt. De iter1 en iter2 worden gedeclareerd met het auto-sleutelwoord en hebben de iteratiebewerking. De for-lusmethode drukt de verwisselde waarden van de vectorarray af bij uitvoering.

De std::iter_swap methode heeft met succes de waarden van de gespecificeerde vectoren verwisseld.

Voorbeeld 4: Programma voor gebruik zonder tijdelijke variabelen om te wisselen

Dit voorbeeld toont een nieuwe manier om getallen in C++-code om te wisselen zonder het gebruik van tijdelijke variabelen.

#include

namespace std; gebruiken ;

int hoofd ( )
{
int x1 = twee , x2 = 12 ;
cout << 'Voordat je gaat ruilen.' << eindel ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << eindel ;

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

cout << ' \n Na het wisselen.' << eindel ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << eindel ;

opbrengst 0 ; }

Laten we eens kijken naar de werking van dit programma. Hier hebben we x1 en x2 gedeclareerd, die aanvankelijk respectievelijk met het nummer zijn ingesteld. Dan, met behulp van de formule x1 = x1+ x2, voegen we x1 en x2 toe en zetten het resultaat in x1. Dit geeft aan dat x1 gelijk is aan 2 plus 12. Daarom is nu gelijk aan 14. Dan passen we de formule x2 = x1 – x2 toe. Dit geeft aan dat x2 = 14 – 12. Daarom is x2 nu gelijk aan 2. We passen nogmaals de formule x1 = x1 – x2 toe. Dit geeft aan dat x1 = 14 – 2. Daarom is x1 = 12 aan het einde. Als gevolg hiervan zijn de nummers verwisseld.

Het nummer dat ervoor en erna is verwisseld, wordt weergegeven op het volgende promptscherm.

Conclusie

Hier bespreken we een volledige beschrijving van swap() in C++, het gebruik ervan en enkele voorbeelden die laten zien hoe het werkt. Door de functie std:: swap() te gebruiken, kunnen de waarden van twee variabelen worden verwisseld. De C++ STL bevat een ingebouwde functie genaamd std::swap(). De functie swap(T& variabele 1, T& variabele 2) functie-aanroepen door middel van verwijzing, en de C++ overbelasting swap() afhankelijk van het type gegevensvariabelen worden ook uitgelegd in deze tutorial.