Namespaces
Variants

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

Aus de.cppreference.net
 
 
 
std::basic_string
 
void swap( basic_string& other );
(bis C++17)
void swap( basic_string& other ) noexcept(/* see below */);
(seit C++17)
(constexpr seit C++20)

Tauscht den Inhalt der Zeichenkette mit dem von other. Alle Iteratoren und Referenzen können ungültig werden.

Falls std::allocator_traits<allocator_type>::propagate_on_container_swap::value gleich true ist, werden die Allokatoren mittels eines nicht-qualifizierten Aufrufs der Nicht-Elementfunktion swap ausgetauscht. Andernfalls werden sie nicht vertauscht (und falls get_allocator() != other.get_allocator(), ist das Verhalten undefiniert).

(seit C++11)

Parameter

other - Zeichenkette, mit der die Inhalte ausgetauscht werden sollen

Komplexität

Konstante.

Exceptions

Es wird keine Ausnahme ausgelöst.

(until C++11)

Es wird keine Ausnahme ausgelöst, es sei denn, das Verhalten ist undefiniert.

Falls aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Wirkung ( strong exception safety guarantee ).

(since 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)

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

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 403 C++98 swap() könnte eine Exception werfen keine Exception wird geworfen
LWG 535 C++98 Das Vertauschen von Strings bewahrte die Zeichenreihenfolge nicht Reihenfolgen werden ebenfalls bewahrt
LWG 2151
( P1148R0 )
C++11 keine Exception wurde im Fall
ungleicher nicht-propagierender Allokatoren geworfen
das Verhalten ist
in diesem Fall undefiniert

Siehe auch

vertauscht die Werte zweier Objekte
(Funktionsvorlage)
vertauscht zwei Elementbereiche
(Funktionsvorlage & Algorithmus-Funktionsobjekt)
vertauscht die Inhalte
(öffentliche Elementfunktion von std::basic_string_view<CharT,Traits>)