swap

swap (두 값을 교환)

두 값을 서로 바꾸는 알고리즘이에요. <utility> 헤더, C++11부터.

출처: cppreference

본문

std::swapab의 값을 서로 교환해요.

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을 호출해 포인터만 바꿔 매우 저렴해요. 객체의 값을 바꿔치기할 때 가장 기본적인 함수예요.

더 알아보기 (Learn more)

cppreference