algorithm_swap

algorithm_swap (값 교환)

std::swap는 주어진 두 값(또는 두 배열)을 서로 교환해요. 동등한 효과를 내는 맞춤형 swap이 없는 타입의 기본 교환 방식이에요.

출처: cppreference

본문

std::swap는 주어진 값을 교환해요. <utility> 헤더에 정의되어 있어요.

template< class T >
void swap( T& a, T& b ) noexcept(/* see below */);

template< class T2, std::size_t N >
void swap( T2 (&a)[N], T2 (&b)[N] ) noexcept(/* see below */);
  • 1번 오버로드 — 값 ab를 교환해요.
  • 2번 오버로드 — 배열 ab를 교환해요. std::swap_ranges(a, a + N, b)와 동등해요.

TMoveConstructibleMoveAssignable 요구사항을 충족해야 해요.

복잡도 (Complexity)

요소 개수에 선형 (배열 오버로드), 기본 오버로드는 상수/이동 연산 수에 따라 달라요.

예제 (Example)

#include <algorithm>
#include <iostream>
#include <vector>

int main()
{
    int a = 1, b = 2;
    std::swap(a, b);
    std::cout << a << ' ' << b << '\n';

    std::vector<int> v1{1, 2}, v2{3, 4};
    std::swap(v1, v2);
    std::cout << v1[0] << ' ' << v2[0] << '\n';
}

출력:

2 1
3 1

더 알아보기 (Learn more)

cppreference