C++ <array> swap-Funktion

C++ Container-Klasse <array>


swapwird bei Arrays verwendet, umden Inhalt zweier Arrays zu vertauschen.Die Funktion ist ein sehr nützliches Werkzeug.

swapist eine Memberfunktion der Container-Klasse, die verwendet wird, umden Inhalt zweier Arrays zu vertauschen.Beide Arrays müssen denselben Typ und dieselbe Größe haben.

swapEs bietet eine effiziente Möglichkeit, die Inhalte zweier Container auszutauschen, und ist ein gängiges Hilfsmittel in Algorithmen- und Datenstruktur-Implementierungen.

Wortdefinitionen: swapEs bedeutet "swap", d. h. das Vertauschen der Inhalte zweier Arrays.


Grundlegende Syntax und Parameter

swapEs ist eine Memberfunktion der Container-Klasse und erfordert ein weiteres Array als Parameter.

Syntaxformat

void swap(array& other) noexcept;

Parameterbeschreibung

  • Parameter: other
    • Typ:array<T, N>&(Referenzen desselben Typs)
    • Beschreibung: Ein anderes Array, dessen Inhalte mit diesem getauscht werden sollen. Die beiden Arrays müssen denselben Elementtyp und dieselbe Größe haben.

Funktionsbeschreibung

  • Rückgabewert: void(Kein Rückgabewert).
  • WirkungTauscht alle Elemente der beiden Arrays. Dies ist eine O(n)-Operation und erfordert elementweises Tauschen.
  • Hinweis: swapÜblicherweise deklariert alsnoexcept, was anzeigt, dass keine Ausnahme geworfen wird.

Beispiel

Lassen Sie uns dies anhand einer Reihe von Beispielen gründlich meistern.swapVerwendung.

Beispiel 1: Grundlegende Verwendung - zwei Arrays tauschen

Beispiel

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> a = {1, 2, 3, 4, 5};
    std::array<int, 5> b = {10, 20, 30, 40, 50};

    std::cout << "Vor dem Tausch:" << std::endl;
    std::cout << "a: ";
    for(int n : a) std::cout << n << " ";
    std::cout << std::endl;
    std::cout << "b: ";
    for(int n : b) std::cout << n << " ";
    std::cout << std::endl;

    // Zwei Arrays tauschen
    a.swap(b);

    std::cout << "\n"Nach dem Tausch:" << std::endl;
    std::cout << "a: ";
    for(int n : a) std::cout << n << " ";
    std::cout << std::endl;
    std::cout << "b: ";
    for(int n : b) std::cout << n << " ";
    std::cout << std::endl;

    return 0;
}

Erwartete Ausgabe:

交换前:
a: 1 2 3 4 5
b: 10 20 30 40 50

交换后:
a: 10 20 30 40 50
b: 1 2 3 4 5

Codeanalyse:

  1. a.swap(b)Vertausche die Inhalte von a und b.
  2. Nach dem Tausch enthält a die Werte, die ursprünglich in b waren, und b enthält die Werte, die ursprünglich in a waren.

Beispiel 2: Verwendung von std::swap

Du kannst auchstd::swapFunktion zum Vertauschen zweier Arrays.

Beispiel

#include <iostream>
#include <array>
#include <algorithm>

int main() {
    std::array<int, 3> arr1 = {1, 2, 3};
    std::array<int, 3> arr2 = {4, 5, 6};

    std::cout << "Vor dem Tausch: " << std::endl;
    std::cout << "arr1: ";
    for(int n : arr1) std::cout << n << " ";
    std::cout << std::endl;

    // std::swap verwenden
    std::swap(arr1, arr2);

    std::cout << "Nach dem Tauschen: " << std::endl;
    std::cout << "arr1: ";
    for(int n : arr1) std::cout << n << " ";
    std::cout << std::endl;

    return 0;
}

Erwartete Ausgabe:

交换前:
arr1: 1 2 3
交换后:
arr1: 4 5 6

Codeanalyse:

  • std::swap(arr1, arr2)Sie können auch zwei Arrays auf dieselbe Weise vertauschen.
  • Die Wirkung ist dieselbe wie beim Aufruf der MemberfunktionswapDasselbe.

Beispiel 3: Umkehren eines Arrays

Sie können swap verwenden, um ein Array umzukehren.

Beispiel

#include <iostream>
#include <array>
#include <algorithm>

int main() {
    std::array<int, 5> numbers = {1, 2, 3, 4, 5};

    std::cout << "Vor dem Umkehren: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    // Zwei Zeiger verwenden, um durch Vertauschen umzukehren
    auto left = numbers.begin();
    auto right = numbers.end() - 1;

    while(left < right) {
        std::swap(*left, *right);
        ++left;
        --right;
    }

    std::cout << "Nach dem Umkehren: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    return 0;
}

Erwartete Ausgabe:

反转前: 1 2 3 4 5
反转后: 5 4 3 2 1

Codeanalyse:

  • Unter Verwendung von Kopf- und Endzeigern undstd::swapDamit kann eine Array-Umkehrung erreicht werden.
  • Dies ist ein manuell implementierter Umkehrungsalgorithmus.

Beispiel 4: Leeren eines Arrays

Man kann mit einem leeren Array tauschen, um einen Leerungseffekt zu erzielen (obwohl die Array-Größe fest ist, kann der Inhalt getauscht werden).

Beispiel

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> data = {1, 2, 3, 4, 5};
    std::array<int, 5> empty = {};

    std::cout << "Before swap - data: ";
    for(int n : data) std::cout << n << " ";
    std::cout << std::endl;

    // Mit einem leeren Array tauschen
    data.swap(empty);

    std::cout << "After swap - data: ";
    for(int n : data) std::cout << n << " ";
    std::cout << std::endl;

    return 0;
}

Erwartete Ausgabe:

交换前 - data: 1 2 3 4 5
交换后 - data: 0 0 0 0 0

Codeanalyse:

  • Da die Arraygröße fest ist, können Elemente nicht wirklich gelöscht werden, aber man kann mit einem All-Null-Array vertauschen, um den Inhalt zu "leeren".
  • Dies kann in manchen Szenarien nützlich sein.

C++ Container-Klasse <array>

Weitere Erweiterungen