std::basic_string<CharT,Traits,Allocator>:: swap
|
void
swap
(
basic_string
&
other
)
;
|
(jusqu'à C++17) | |
|
void
swap
(
basic_string
&
other
)
noexcept
(
/* voir ci-dessous */
)
;
|
(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
std::
allocator_traits
<
allocator_type
>
::
propagate_on_container_swap
::
value
est
true
, alors les allocateurs sont échangés via un appel non qualifié à la fonction non-membre
|
(depuis C++11) |
Table des matières |
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) |
|
|
échange le contenu
(fonction membre publique de
std::basic_string_view<CharT,Traits>
)
|