std::basic_string<CharT,Traits,Allocator>::swap
void swap( basic_string& other );
|
(jusqu'à C++17) | |
void swap( basic_string& other ) noexcept(/* see below */);
|
(depuis C++17) (constexpr depuis C++20) |
|
Échange le contenu de la chaîne avec celui de other. Tous les itérateurs et références peuvent être invalidés.
|
Si |
(depuis C++11) |
Paramètres
| autre | - | chaîne avec laquelle échanger le contenu |
Complexité
Constante.
Exceptions
|
Aucune exception n'est levée. |
(until C++11) |
|
Aucune exception n'est levée, sauf si le comportement est indéfini. Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie de sécurité d'exception forte ). |
(since C++11) |
|
noexcept
spécification :
noexcept
(
std::
allocator_traits
<
Allocator
>
::
propagate_on_container_swap
::
value
||
std:: allocator_traits < Allocator > :: is_always_equal :: value ) |
(depuis C++17) |
Exemple
#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'; }
Sortie :
Before swap: a = AAA b = BBBB After swap: a = BBBB b = AAA
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 403 | C++98 |
swap()
pouvait lever une exception
|
aucune exception n'est levée |
| LWG 535 | C++98 | l'échange de chaînes ne préservait pas l'ordre des caractères | les ordres sont également préservés |
|
LWG 2151
( P1148R0 ) |
C++11 |
aucune exception n'était levée dans le cas
d'allocateurs non propagants inégaux |
le comportement est
indéfini dans ce cas |
Voir aussi
| échange les valeurs de deux objets (modèle de fonction) | |
| échange deux plages d'éléments (modèle de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| échange le contenu (fonction membre publique de std::basic_string_view<CharT,Traits>)
|