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