swap()

김민수·2025년 1월 8일

C++

목록 보기
12/68

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::swap() vs std::vector::swap()

std::vectorstd::list 같은 경우에는 자체적으로 swap() 멤버 함수를 제공한다. 이 함수는 같은 종류의 컨테이너끼리 데이터를 효율적으로 교환할 수 있도록 설계되어 있다.

std::swap()std::vector::swap()
모든 자료형에 대해 사용 가능벡터 같은 특정 컨테이너에서만 사용 가능
별도의 복사 연산 없이 교환내부 포인터를 교환하여 더 빠름
템플릿 함수멤버 함수
profile
안녕하세요

0개의 댓글