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번 오버로드 — 값
a와b를 교환해요. - 2번 오버로드 — 배열
a와b를 교환해요.std::swap_ranges(a, a + N, b)와 동등해요.
T는 MoveConstructible 및 MoveAssignable 요구사항을 충족해야 해요.
복잡도 (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