Namensräume
Varianten
Aktionen

std::basic_string<CharT,Traits,Allocator>:swap

Von cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::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>::
    propagate_on_container_swap::value &&
get_allocator() == s.get_allocator()
false ist, ist das Verhalten undefiniert.

(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

#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) [edit]
Tauscht zwei Elementbereiche
(Funktionstempelat) [edit]
tauscht die Inhalte
(öffentliche Memberfunktion von std::basic_string_view<CharT,Traits>) [edit]