std::basic_string<CharT,Traits,Allocator>::swap - cppreference.com (original) (raw)
| 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) |
|---|
[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) |
[edit] Example
#include #include 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 403 | C++98 | swap() might throw an exception | no exception is thrown |
| LWG 535 | C++98 | swapping strings did not preserve the character orders | orders are also preserved |
| LWG 2151(P1148R0) | C++11 | no exception was thrown in the caseof unequal non-propagating allocators | the behavior isundefined 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] |