From cppreference.com
Defined in header
template<classCharT,classTraits,classAlloc>voidswap(std::basic_string<CharT,Traits,Alloc>&lhs,std::basic_string<CharT,Traits,Alloc>&rhs);(until C++17)template<classCharT,classTraits,classAlloc>voidswap(std::basic_string<CharT,Traits,Alloc>&lhs,std::basic_string<CharT,Traits,Alloc>&rhs)noexcept(/* see below */);(since C++17)
(constexpr since C++20)Specializes the
algorithm for
. Swaps the contents of lhs and rhs.
Equivalent to lhs.swap(rhs).
Parameters
lhs, rhs - strings whose contents to swap Return value
(none)
Complexity
Constant.
Exceptions
specification:
noexcept(noexcept(lhs.swap(rhs)))(since C++17)Example
Run this code
#include<iostream>#include<string>intmain(){std::stringa="AAA";std::stringb="BBBB";std::cout<<"Before swap:\n""a = "<<a<<"\n""b = "<<b<<"\n\n";std::swap(a,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 Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++11 non-member swap was noexcept and inconsistent with member swapnoexcept removed See also
swaps the contents
(public member function)