std::multimap<Key,T,Compare,Allocator>::swap
Von cppreference.com
void swap( multimap& other ); |
(bis C++17) | |
| void swap( multimap& other ) noexcept(/* siehe unten */); |
(seit C++17) | |
Tauscht den Inhalt des Containers mit dem von other aus. Ruft keine Bewegungs-, Kopier- oder Tauschoperationen für einzelne Elemente auf.
Alle Iteratoren und Referenzen bleiben gültig. Der end() Iterator wird ungültig. Die Compare Objekte müssen Swappable sein und werden durch einen nicht qualifizierten Aufruf von non-member swap ausgetauscht.
|
Wenn std::allocator_traits<allocator_type>::propagate_on_container_swap::value true ist, werden die Allocatoren durch einen nicht qualifizierten Aufruf von non-member |
(seit C++11) |
Inhalt |
[bearbeiten] Parameter
| Sonstiges | - | Container, mit dem die Inhalte ausgetauscht werden sollen |
[bearbeiten] Ausnahmen
|
Jede Ausnahme, die vom Austausch der |
(bis C++17) |
|
noexcept-Spezifikation:
noexcept(std::allocator_traits<Allocator>::is_always_equal::value && std::is_nothrow_swappable<Compare>::value) |
(seit C++17) |
[bearbeiten] Komplexität
Konstant.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <string> #include <utility> #include <map> // print out a std::pair template<class Os, class U, class V> Os& operator<<(Os& os, const std::pair<U, V>& p) { return os << p.first << ':' << p.second; } // print out a container template<class Os, class Co> Os& operator<<(Os& os, const Co& co) { os << '{'; for (auto const& i : co) os << ' ' << i; return os << " }\n"; } int main() { std::multimap<std::string, std::string> m1{{"γ", "gamma"}, {"β", "beta"}, {"α", "alpha"}, {"γ", "gamma"}}, m2{{"ε", "epsilon"}, {"δ", "delta"}, {"ε", "epsilon"}}; const auto& ref = *(m1.begin()); const auto iter = std::next(m1.cbegin()); std::cout << "──────── before swap ────────\n" << "m1: " << m1 << "m2: " << m2 << "ref: " << ref << "\niter: " << *iter << '\n'; m1.swap(m2); std::cout << "──────── after swap ────────\n" << "m1: " << m1 << "m2: " << m2 << "ref: " << ref << "\niter: " << *iter << '\n'; // Note that every iterator referring to an element in one container before // the swap refers to the same element in the other container after the swap. // Same is true for references. }
Ausgabe
──────── before swap ────────
m1: { α:alpha β:beta γ:gamma γ:gamma }
m2: { δ:delta ε:epsilon ε:epsilon }
ref: α:alpha
iter: β:beta
──────── after swap ────────
m1: { δ:delta ε:epsilon ε:epsilon }
m2: { α:alpha β:beta γ:gamma γ:gamma }
ref: α:alpha
iter: β:beta[bearbeiten] Siehe auch
| spezialisiert den Algorithmus std::swap (function template) |