이 글에서는 C++ STL에서 deque의 push_back() 함수가 어떻게 동작하는지 그 기능과 사용법을 예제와 함께 살펴봅니다.
덱(Deque)이란 무엇인가?
덱(Double Ended Queue, 데크)은 양쪽 끝에서 모두 요소의 삽입과 삭제가 가능한 시퀀스 컨테이너입니다. 일반적인 큐(Queue) 자료구조는 데이터를 뒤쪽(Rear)에만 삽입할 수 있고 앞쪽(Front)에서만 삭제할 수 있습니다.
버스 정류장의 줄을 떠올려 보면 이해하기 쉽습니다. 사람들은 줄의 맨 뒤에만 새로 들어설 수 있고, 맨 앞에 서 있는 사람이 가장 먼저 나갑니다. 반면 덱(Double Ended Queue)은 이름 그대로 양쪽 끝 어디에서든 데이터의 삽입과 삭제가 모두 가능한 자료구조입니다.
deque push_back() 함수란?
push_back() 함수는 덱의 맨 뒤(끝)에 새로운 요소를 삽입할 때 사용합니다.
구문(Syntax)
dequename.push_back(value)
매개변수(Parameters)
value — 덱의 맨 뒤에 삽입할 새로운 요소를 의미합니다. 이 값은 반드시 덱에 저장된 요소와 동일한 데이터 타입이어야 합니다.
예시
입력 Deque — 45 46 47 48 49
출력 새 Deque — 45 46 47 48 49 50
입력 Deque — B L A N K E T
출력 새 Deque — B L A N K E T S
적용할 수 있는 접근 방식
먼저 덱을 선언하고 초기화합니다.
덱의 현재 상태를 출력합니다.
push_back() 함수를 호출하여 새 요소를 추가합니다.
삽입 후 변경된 덱을 다시 출력합니다.
위 접근 방식을 활용하면 덱의 맨 뒤에 손쉽게 새 요소를 추가할 수 있습니다. 단, 새 요소의 데이터 타입은 반드시 덱의 요소 타입과 같아야 합니다.
예제 1: 정수형 덱에 요소 추가하기
// deque push_back( ) 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;
int main() {
// 덱 초기화
deque<int> dq = { 71, 75, 73, 76, 77 };
// 덱 출력
cout << "Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
// push_back( ) 함수로 새 요소 삽입
dq.push_back(78);
// 새 요소 삽입 후 덱 출력
cout << "\n새 Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
입력 - Deque: 71 75 73 76 77 출력 - 새 Deque: 71 75 73 76 77 78
예제 2: 다른 값으로 확인하기
// deque push_back( ) 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;
int main() {
// 덱 초기화
deque<int> dq = { 64, 65, 66, 69, 68 };
cout << "Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
// push_back( ) 함수로 새 요소 삽입
dq.push_back(67);
// 새 요소 삽입 후 덱 출력
cout << "\n새 Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
입력: 64 65 66 69 68 출력: 64 65 66 69 68 67
정리
C++ STL의 deque push_back() 함수는 덱의 맨 뒤에 새로운 요소를 추가하는 가장 기본적이고 효율적인 방법입니다. 평균적으로 상수 시간(O(1))에 삽입이 이루어지기 때문에, 양방향으로 데이터를 관리해야 하는 상황에서 매우 유용하게 활용됩니다. 반대 방향인 맨 앞에 요소를 추가하려면 push_front() 함수를 사용하면 됩니다.