std::basic_string<CharT,Traits,Allocator>:swap
Von cppreference.com
< cpp | string | basic string
void swap( basic_string& other ); |
(bis C++17) | |
| void swap( basic_string& other ) noexcept(/* siehe unten */); |
(seit C++17) (constexpr seit C++20) |
|
Tauscht den Inhalt des Strings mit dem von other aus. Alle Iteratoren und Referenzen können ungültig werden.
|
Wenn std::allocator_traits<Allocator>:: |
(seit C++11) |
Inhalt |
[edit] Parameter
| Sonstiges | - | Der String, dessen Inhalt ausgetauscht werden soll |
[edit] Komplexität
Konstant.
[edit] Ausnahmen
|
Es wird keine Ausnahme ausgelöst. |
(bis C++11) |
|
Es wird keine Ausnahme ausgelöst, es sei denn, das Verhalten ist undefiniert. Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkungen (starkes Ausnahmesicherheitsgarantie). |
(seit C++11) |
|
noexcept-Spezifikation:
noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value || std::allocator_traits<Allocator>::is_always_equal::value) |
(seit C++17) |
[edit] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <string> int main() { std::string a = "AAA"; std::string b = "BBBB"; std::cout << "Before swap:\n" "a = " << a << "\n" "b = " << b << "\n\n"; a.swap(b); std::cout << "After swap:\n" "a = " << a << "\n" "b = " << b << '\n'; }
Ausgabe
Before swap: a = AAA b = BBBB After swap: a = BBBB b = AAA
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 403 | C++98 | swap() könnte eine Ausnahme auslösen |
Es wird keine Ausnahme ausgelöst |
| LWG 535 | C++98 | Der Austausch von Strings hat die Zeichenreihenfolge nicht beibehalten | Die Reihenfolgen werden ebenfalls beibehalten |
| LWG 2151 (P1148R0) |
C++11 | Im Fall von ungleichen, nicht propagierenden Allokatoren wurde keine Ausnahme ausgelöst von ungleichen, nicht propagierenden Allokatoren |
Das Verhalten ist in diesem Fall nicht definiert. |
[edit] Siehe auch
| tauscht die Werte von zwei Objekten (Funktionsvorlage) | |
| Tauscht zwei Elementbereiche (Funktionstempelat) | |
| tauscht die Inhalte (öffentliche Memberfunktion von std::basic_string_view<CharT,Traits>) |