(C++17) | ||||
| Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
| Associative | ||||
| Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Views | ||||
(C++20) | ||||
(C++23) | ||||
| Tables | ||||
| Iterator invalidation | ||||
| Member function table | ||||
| Non-member function table |
| Member types | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non-member functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper classes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++11) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Deduction guides(C++17) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <vector> | ||
staticvoid swap( reference x, reference y); | (constexpr since C++20) | |
Swaps the contents ofx andy as if bybool b= x; x= y; y= b;.
Contents |
| x | - | std::vector<bool>::reference value to swap withy |
| y | - | std::vector<bool>::reference value to swap withx |
(none)
Constant.
#include <iostream>#include <vector> void println(std::string_view fmt,std::vector<bool>const& vb={}){for(std::cout<< fmt;boolconst e: vb)std::cout<< e<<' ';std::cout<<'\n';} int main(){ println("swap elements of the same vector:");std::vector<bool> x{1,0}; println("before swap, x: ", x); x.swap(x[0], x[1]);// same as std::vector<bool>::swap(x[0], x[1]); println("after swap, x: ", x); println("swap elements of two different vectors:");std::vector<bool> y{0,0,1}; println("before swap, x: ", x); println("before swap, y: ", y); y.swap(x[0], y[2]);// same as std::vector<bool>::swap(x[0], y[2]); println("after swap, x: ", x); println("after swap, y: ", y);}
Output:
swap elements of the same vector:before swap, x: 1 0 after swap, x: 0 1 swap elements of two different vectors:before swap, x: 0 1 before swap, y: 0 0 1 after swap, x: 1 1 after swap, y: 0 0 0
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 814 | C++98 | the description of this member function was missing | added |
| proxy class representing a reference to a singlebool (class) | |
| swaps the contents (public member function of std::vector<T,Allocator>)[edit] | |
| specializes thestd::swap algorithm (function template)[edit] |