deque::swap

deque::swap (내용 교환)

두 deque의 내용을 서로 바꾸는 멤버 함수예요. 개별 요소에 이동·복사·스왑을 호출하지 않아요.

출처: cppreference

본문

swap()은 컨테이너의 내용을 other와 교환해요.

void swap( deque& other );                       // (until C++17)

void swap( deque& other ) noexcept(/* see below */);   // (since C++17)

개별 요소에 대한 이동·복사·스왑을 호출하지 않아요. 내부 데이터 구조의 포인터만 교환하는 셈이라 상수 시간에 가까워요.

  • 모든 반복자와 참조는 유효하게 유지되고, end() 반복자는 무효화돼요.
  • 할당자 관련: propagate_on_container_swap::valuetrue면 할당자도 교환되고, 아니면 교환되지 않아요.
std::deque<int> a{1, 2, 3};
std::deque<int> b{9, 8};
a.swap(b);
// a == {9,8}, b == {1,2,3}

자유 함수 std::swap(a, b)도 내부적으로 멤버 swap을 호출해요. 요소 수가 많아도 포인터 교환만 하므로 swap이 매우 저렴하다는 점이 vector와 같은 장점이에요.

더 알아보기 (Learn more)

cppreference