swap() 함수는 두 변수의 값을 교환하는 함수이다. 교환 대상이 메모리 상에서 직접 바뀌기 때문에, 별도의 임시 변수를 사용할 필요가 없다.
⦁ 기본 자료형
#include <utility> // swap 함수 포함
int main() {
int a = 5, b = 10;
std::swap(a, b); // a와 b의 값을 교환
std::cout << "a: " << a << ", b: " << b << std::endl; // 출력: a: 10, b: 5
return 0;
}
⦁ 벡터
#include <utility>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
std::swap(vec1, vec2); // vec1과 vec2의 값을 교환
std::cout << "vec1: ";
for (int v : vec1) std::cout << v << " "; // 출력: 4 5 6
std::cout << "\nvec2: ";
for (int v : vec2) std::cout << v << " "; // 출력: 1 2 3
return 0;
}
std::vector나 std::list 같은 경우에는 자체적으로 swap() 멤버 함수를 제공한다. 이 함수는 같은 종류의 컨테이너끼리 데이터를 효율적으로 교환할 수 있도록 설계되어 있다.
std::swap() | std::vector::swap() |
|---|---|
| 모든 자료형에 대해 사용 가능 | 벡터 같은 특정 컨테이너에서만 사용 가능 |
| 별도의 복사 연산 없이 교환 | 내부 포인터를 교환하여 더 빠름 |
| 템플릿 함수 | 멤버 함수 |