Namespaces
Variants
Actions

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

From cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
void swap( basic_string& other );
(until C++17)
void swap( basic_string& other )noexcept(/* see below */);
(since C++17)
(constexpr since C++20)

Exchanges the contents of the string with those of other. All iterators and references may be invalidated.

If std::allocator_traits<allocator_type>::propagate_on_container_swap::value is true, then the allocators are exchanged using an unqualified call to non-member swap. Otherwise, they are not swapped (and if get_allocator()!= other.get_allocator(), the behavior is undefined).

(since C++11)

Contents

[edit]Parameters

other - string to exchange the contents with

[edit]Complexity

Constant.

[edit]Exceptions

No exception is thrown.

(until C++11)

No exception is thrown, unless the behavior is undefined.

If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).

(since C++11)


noexcept specification:  
noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value||
         std::allocator_traits<Allocator>::is_always_equal::value)
(since C++17)

[edit]Example

#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';}

Output:

Before swap: a = AAA b = BBBB   After swap: a = BBBB b = AAA

[edit]Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 403C++98 swap() might throw an exception no exception is thrown
LWG 535C++98 swapping strings did not preserve the character orders orders are also preserved
LWG 2151
(P1148R0)
C++11 no exception was thrown in the case
of unequal non-propagating allocators
the behavior is
undefined in this case

[edit]See also

swaps the values of two objects
(function template)[edit]
swaps two ranges of elements
(function template)[edit]
swaps the contents
(public member function of std::basic_string_view<CharT,Traits>)[edit]
close