std::inplace_vector<T,N>::swap
Von cppreference.com
< cpp | container | inplace vector
| 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>))
(std::is_nothrow_swappable_v<T> && std::is_nothrow_move_constructible_v<T>))
[bearbeiten] Komplexität
Linear zur Größe des Containers.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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) |