swap
swap (두 값을 교환)
두 값을 서로 바꾸는 알고리즘이에요. <utility> 헤더, C++11부터.
출처: cppreference
본문
std::swap은 a와 b의 값을 서로 교환해요.
template< class T >
void swap( T& a, T& b ) noexcept(/* see below */);
- 동작은
T tmp = std::move(a); a = std::move(b); b = std::move(tmp);와 같아 이동 기반이에요. noexcept조건은T가 이동 가능한지에 따라 정해져요.- 배열 특수화(
swap(T(&a)[N], T(&b)[N]))도 있어요.
int x = 1, y = 2;
std::swap(x, y); // x==2, y==1
컨테이너의 전체 교환(std::swap(v1, v2))은 내부적으로 멤버 swap을 호출해 포인터만 바꿔 매우 저렴해요. 객체의 값을 바꿔치기할 때 가장 기본적인 함수예요.