Namensräume
Varianten
Aktionen

std::inplace_vector<T,N>::swap

Von cppreference.com
 
 
 
 
constexpr void swap( inplace_vector& other ) noexcept(/* siehe unten */);
(seit C++26)

Tauscht den Inhalt des Containers mit dem von other aus. Veranlasst keine Iteratoren und Referenzen, sich mit dem anderen Container zu assoziieren.

Inhalt

[bearbeiten] Parameter

Sonstiges - Container, mit dem die Inhalte ausgetauscht werden sollen

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Ausnahmen

noexcept-Spezifikation:  
noexcept(N = 0 ||
         (std::is_nothrow_swappable_v<T> && std::is_nothrow_move_constructible_v<T>))

[bearbeiten] Komplexität

Linear zur Größe des Containers.

[bearbeiten] Beispiel

#include <inplace_vector>
#include <print>
 
int main()
{
    std::inplace_vector<int, 3> a1{1, 2, 3}, a2{4, 5, 6};
 
    auto i1 = a1.begin();
    auto i2 = a2.begin();
    int& r1 = a1[1];
    int& r2 = a2[1];
 
    auto print_them_all = [&](auto rem)
    {
        std::println("{}a1 = {}, a2 = {}, *i1 = {}, *i2 = {}, r1 = {}, r2 = {}",
                     rem, a1, a2, *i1, *i2, r1, r2);
    };
 
    print_them_all("Before swap:\n");
    a1.swap(a2);
    print_them_all("After swap:\n");
 
    // Note that after swap() iterators and references stay associated with their
    // original sites, e.g., i1 points to element a1[0], r1 refers to a1[1].
}

Ausgabe

Before swap:
a1 = [1, 2, 3], a2 = [4, 5, 6], *i1 = 1, *i2 = 4, r1 = 2, r2 = 5
After swap:
a1 = [4, 5, 6], a2 = [1, 2, 3], *i1 = 4, *i2 = 1, r1 = 5, r2 = 2

[bearbeiten] Siehe auch

spezialisiert den Algorithmus std::swap
(function template) [edit]