Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL queue::swap() 함수 완벽 가이드: 문법과 예제

이 글에서는 C++ STL에서 제공하는 queue::swap() 함수의 동작 원리, 문법, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.

C++ STL에서 큐(Queue)란 무엇인가?

큐(queue)는 C++ STL에 정의된 간단한 순차 자료구조로, 데이터를 FIFO(First In First Out, 선입선출) 방식으로 삽입하고 삭제합니다. 즉, 가장 먼저 들어온 요소가 가장 먼저 나가는 구조입니다. 요소는 큐의 뒤쪽(rear)에서 삽입되고, 앞쪽(front)에서 제거됩니다. C++ STL에는 이러한 방식으로 동작하는 큐가 이미 템플릿 형태로 사전 정의되어 있어, 별도의 구현 없이 바로 사용할 수 있습니다.

queue::swap()이란?

queue::swap()은 C++ STL의 <queue> 헤더 파일에 선언된 내장 함수입니다. 이 함수는 두 큐 컨테이너의 내용물을 서로 맞바꾸는(swap) 데 사용됩니다. 매개변수로 다른 큐 컨테이너 하나를 받으며, 호출된 큐와 인자로 전달된 큐의 모든 요소가 서로 교환됩니다.

swap()은 내부적으로 포인터나 참조만 교환하므로 요소를 일일이 복사하는 방식보다 훨씬 빠르고 효율적이라는 장점이 있습니다.

문법(Syntax)

myqueue1.swap(myqueue2);

이 함수는 매개변수로 맞바꿀 대상인 다른 큐 컨테이너 하나를 전달받습니다.

반환 값(Return Value)

이 함수는 아무 값도 반환하지 않습니다(void).

예제

Input: queue<int> odd = {1, 3, 5};
       queue<int> eve = {2, 4, 6};
Output:
       Odd: 2 4 6
       Eve: 1 3 5

실전 코드 예제

#include <iostream>
#include <queue>
using namespace std;
int main(){
    queue<int> Queue_1, Queue_2;
    for(int i=0 ;i<=5 ;i++){
        Queue_1.push(i);
    }
    for(int i=5 ;i<=10 ;i++){
        Queue_2.push(i);
    }
    // swap 함수 호출
    Queue_1.swap(Queue_2);
    cout<<"Element in Queue_1 are: ";
    while (!Queue_1.empty()){
        cout << ' ' << Queue_1.front();
        Queue_1.pop();
    }
    cout<<"\nElement in Queue_2 are: ";
    while (!Queue_2.empty()){
        cout << ' ' << Queue_2.front();
        Queue_2.pop();
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Element in Queue_1 are: 5 6 7 8 9 10
Element in Queue_2 are: 0 1 2 3 4 5

출력 결과에서 볼 수 있듯이, swap() 함수 호출 후 Queue_1에는 원래 Queue_2에 있던 요소들이, Queue_2에는 원래 Queue_1에 있던 요소들이 들어 있는 것을 확인할 수 있습니다. 이처럼 queue::swap()을 활용하면 두 큐의 내용을 간단하고 효율적으로 교환할 수 있습니다.