C++-Std-Swap

C Std Swap

„Swapping ist der Austausch von zwei oder mehr Dingen. Die Daten zwischen zwei Variablen in der Programmierung können umgeschaltet werden. Der Austausch von Dingen zwischen zwei Personen ist im wirklichen Leben möglich. Die Werte zweier beliebiger Objekte können mit der Standardbibliotheksfunktion swap() in C++ ausgetauscht werden. Es wurde unter der Überschrift „Utility“ in C11 platziert. Die Funktion swap() in C++ hat eine Komplexität von N für Arrays, weil jedes Element einzeln ausgetauscht werden muss, während die Schwierigkeit der Funktion für Konstanten konstant ist. Die Funktion swap() gibt eine Warnung oder einen Fehler aus, wenn eines der variablen Elemente fehlschlägt. Schauen Sie sich die Signatur der Funktion für std::swap() unten an:

Syntax:

Schablone < Klasse T > Leere Tauschen ( T & Variable_1 , T & Variable_2 ) ;

Sowohl der Wert der ersten Variablen als auch der zweiten Variablen, die beide Werte speichern, sollen ausgetauscht werden. Die Funktion schaltet nur die Werte der Variablen um; es hat keine Ausgabe.“







Funktionsweise der Funktion swap() in C++

Die Swap-Funktion wird in C++ mit den folgenden drei Zeilen implementiert.



Schablone Leere Tauschen ( T & ich , T & j ) {
T-Temp = Standard :: Bewegung ( ich ) ;
ich = Standard :: Bewegung ( j ) ;
j = Standard :: Bewegung ( Temp ) ;
}

Die Anweisung „T temp = std::move(i)“; erstellt eine Kopie des Elements „i“ und dupliziert es. Hier „i = std::move(j)“; verwirft die ursprünglichen Elemente von „i“ und speichert die „i“-Kopie von „j“ anstelle des ursprünglichen „j“. Die Formel „j = std:: move(temp)“; Speichern Sie „i“ mit einem Klon von temp und entfernen Sie den identischen Inhalt von temp. Löschen Sie außerdem die temporäre Variable, nachdem die Ausführung der Funktion swap() abgeschlossen ist.



Beispiel 1: Programm mit std::move-Methode zum Tauschen

Wie unten gezeigt, können wir zwei Objekte mit dem C++11-Feature std::move austauschen.





#include

#einschließen



Schablone
Leere Tauschen ( T & a , T & b )
{
T-Temp = Standard :: Bewegung ( a ) ;
a = Standard :: Bewegung ( b ) ;
b = Standard :: Bewegung ( Temp ) ;
}
int hauptsächlich ( )
{
Standard :: Vektor aufführen = { 10 , 12 , 13 , fünfzehn , 16 , 17 } ;
int ich = 3 , j = 5 ;
Tauschen ( aufführen [ ich ] , aufführen [ j ] ) ;
zum ( int ich : aufführen ) {
Standard :: cout << ich << ' ' ;
}
Rückkehr 0 ; }

Wir haben eine Vorlagendeklaration, die ein Objekt „T“ hat. Danach haben wir die Funktion als „Swap“ eingerichtet. Die Funktion übernimmt die beiden Parameter &a und &b vom Typ „T“. Da die Argumente T& a, T& b die Adresse der übergebenen Variablen referenzieren oder speichern und direkt auf sie anwenden, ohne zurückzukehren, wird die Funktion swap(T& a, T& b) als Aufruf durch Referenz bezeichnet.



Innerhalb des void-Austauschs haben wir den Auslagerungsalgorithmus mithilfe der Methode std::move angewendet. Dann haben wir die Hauptprogramme erstellt. Hier haben wir die Variable „list“ deklariert und mit der Liste der numerischen Werte initialisiert. Wir haben die Werte für „i“ und „j“ zum Austauschen festgelegt. Der Zahlenwert am zweiten Index wurde durch den Zahlenwert am fünften Index ersetzt. Dann haben wir die Swap-Funktion aufgerufen und ihr die Indizes „i“ und „j“ zum Tauschen übergeben. Die for-Schleife wird zum Drucken der Auslagerungsliste verwendet.

Die Ausgabe zeigte die geänderte Liste an. Sie können beobachten, wie die neu generierte Liste den Wert gemäß den angegebenen Indizes vertauscht.

Beispiel 2: Programm, das die std::swap-Methode zum Tauschen verwendet

Die Verwendung des std::swap-Mechanismus im Utility-Header (in C++11) ist die übliche Lösung. Die Werte von zwei Objekten werden vertauscht, damit es funktioniert.

#include

#einschließen

#include



int hauptsächlich ( )
{
Standard :: Vektorarr = { 3 , 6 , 9 , fünfzehn , 13 } ;
int ich = 3 , j = 4 ;

Standard :: Tauschen ( Arr [ ich ] , Arr [ j ] ) ;

zum ( int ich : Arr ) {
Standard :: cout << ich << ' ' ;
}

Rückkehr 0 ;
}

Durch den Import der Header-Datei können wir auf die Swap-Funktion in unserem Programm zugreifen. Hier haben wir die Header-Datei mit zwei weiteren wichtigen Bibliotheken eingebunden. Dann haben wir die Methode int main etabliert. Innerhalb des Hauptprogramms haben wir den Vektor deklariert, indem wir die Variable „arr“ erstellt haben. Die Variable „arr“ wird mit den fünf Elementen der Ganzzahl initialisiert. Die Indexpositionen werden zum Austauschen den „i“ und „j“ zugewiesen. Die Variablen „i“ und „j“ werden dann an die Methode std::swap übergeben, um den Wert des angegebenen Index zu tauschen. Mit der for-Schleife haben wir die vertauschten Arrays ausgegeben.

Die nach dem Auslagerungsvorgang mit der Methode std::swap erhaltene Liste wird wie folgt angezeigt:

Beispiel 3: Programm, das die std::iter_swap-Methode zum Austauschen verwendet

Eine zusätzliche Option ist die Verwendung des Algorithmus std::iter_swap, der im Header des Algorithmus aufgeführt ist. Die Art und Weise, wie es funktioniert, besteht darin, die Werte der Objekte zu wechseln, auf die die bereitgestellten Iteratoren zeigen.

#include

#einschließen

#include

#include



int hauptsächlich ( )
{
Standard :: Vektorvec = { 64 , 61 , 62 , 63 , 60 } ;
int ich = 0 , j = 4 ;
Auto itr1 = Standard :: nächste ( ein Ding. Start ( ) , ich ) ;
Auto itr2 = Standard :: nächste ( ein Ding. Start ( ) , j ) ;

Standard :: iter_swap ( itr1 , itr2 ) ;
zum ( int ich : ein Ding ) {
Standard :: cout << ich << ' ' ;
}
Rückkehr 0 ;
}

Für die Hauptmethode des Programms haben wir eine Vektorvariable „vec“ deklariert und ihr eine Vektorliste von Zahlen zugewiesen. Dann haben wir die Indexposition für die Variablen „i“ und „j“ angegeben. Die Methode std::iter_swap wird aufgerufen, die iter1 und iter2 als Argument akzeptiert. iter1 und iter2 werden mit dem Schlüsselwort auto deklariert und haben die Iterationsoperation. Die for-Schleife-Methode gibt bei der Ausführung die ausgetauschten Werte des Vektorarrays aus.

Die Methode std::iter_swap hat die Werte der angegebenen Vektoren erfolgreich ausgetauscht.

Beispiel 4: Programm zur Verwendung ohne temporäre Variablen zum Austauschen

Dieses Beispiel zeigt eine neue Methode zum Austauschen von Zahlen in C++-Code ohne die Verwendung von temporären Variablen.

#include

mit Namensraum std ;

int hauptsächlich ( )
{
int x1 = zwei , x2 = 12 ;
cout << 'Vor dem Austausch.' << Ende ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << Ende ;

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

cout << ' \n Nach dem Tausch.' << Ende ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << Ende ;

Rückkehr 0 ; }

Lassen Sie uns die Funktionsweise dieses Programms untersuchen. Hier haben wir x1 und x2 deklariert, die anfangs jeweils mit der Zahl gesetzt werden. Dann addieren wir unter Verwendung der Formel x1 = x1+ x2 x1 und x2 und geben das Ergebnis in x1 ein. Dies zeigt an, dass x1 gleich 2 plus 12 ist. Daher ist jetzt gleich 14. Dann wenden wir die Formel x2 = x1 – x2 an. Dies zeigt an, dass x2 = 14 – 12. Daher ist x2 jetzt gleich 2. Wir wenden wieder die Formel x1 = x1 – x2 an. Dies zeigt an, dass x1 = 14 – 2. Daher ist x1 = 12 am Ende. Aus diesem Grund wurden die Nummern vertauscht.

Die vorher und nachher vertauschte Nummer wird auf dem folgenden Eingabeaufforderungsbildschirm angezeigt.

Fazit

Hier gehen wir auf eine vollständige Beschreibung von swap() in C++, seine Verwendung und einige Beispiele ein, die zeigen, wie es funktioniert. Mit der Funktion std::swap() können die Werte zweier Variablen vertauscht werden. Die C++-STL enthält eine integrierte Funktion namens std::swap(). Die Aufrufe der Funktion swap(T& variable 1, T& variable 2) als Referenz und die C++-Überladungen swap() in Abhängigkeit vom Typ der Datenvariablen werden ebenfalls in diesem Lernprogramm erläutert.