이 글에서는 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()을 활용하면 두 큐의 내용을 간단하고 효율적으로 교환할 수 있습니다.