이 글에서는 C++ STL에서 제공하는 deque::begin()과 deque::end() 함수의 동작 방식, 문법, 그리고 실제 사용 예제를 자세히 알아보겠습니다.
Deque(덱)란 무엇인가?
Deque(Double Ended Queue, 양방향 큐)는 컨테이너의 양쪽 끝에서 모두 삽입과 삭제가 가능한 시퀀스 컨테이너입니다.
일반적인 큐(Queue) 자료구조를 떠올려 보면, 사용자는 데이터를 뒤쪽(Rear)에만 삽입할 수 있고 앞쪽(Front)에서만 삭제할 수 있습니다. 버스 정류장 줄을 예로 들면, 새로운 사람은 줄의 맨 뒤에만 들어설 수 있고 맨 앞에 서 있는 사람이 가장 먼저 나가게 됩니다.
반면 Deque는 이름 그대로 양쪽 끝(앞과 뒤) 모두에서 데이터의 삽입과 삭제가 가능하다는 점에서 일반 큐와 차별화됩니다.
deque::begin()이란?
deque::begin()은 C++ STL에 내장된 함수로, <deque> 헤더 파일에 선언되어 있습니다. 이 함수는 해당 deque 컨테이너의 첫 번째 요소를 가리키는 반복자(iterator)를 반환합니다.
begin()과 end()는 함께 사용되어 deque 컨테이너의 전체 요소를 순회(iterate)하는 데 활용됩니다.
문법
mydeque.begin();
매개변수
이 함수는 어떤 매개변수도 받지 않습니다.
반환값
deque 컨테이너의 첫 번째 요소를 가리키는 반복자(iterator)를 반환합니다.
예제 1
입력: deque<int> mydeque = {10, 20, 30, 40};
mydeque.begin();
출력:
맨 앞의 요소 = 10예제 2: begin()과 end()로 전체 순회하기
#include <deque>
#include <iostream>
using namespace std;
int main(){
deque<int> Deque = {2, 4, 6, 8, 10 };
cout<<"요소들 : ";
for (auto i = Deque.begin(); i!= Deque.end(); ++i)
cout << ' ' << *i;
return 0;
}실행 결과
요소들 : 2 4 6 8 10
deque::end()란?
deque::end() 역시 C++ STL에 내장된 함수로, <deque> 헤더 파일에 선언되어 있습니다. 이 함수는 해당 deque 컨테이너의 마지막 요소 다음 위치를 가리키는 반복자를 반환합니다.
주의할 점은 end()가 마지막 요소 자체가 아니라 그 다음 위치(past-the-end)를 가리킨다는 것입니다. 따라서 begin()부터 end()까지 순회하면 컨테이너의 모든 요소를 빠짐없이 방문할 수 있습니다.
문법
mydeque.end();
매개변수
이 함수는 어떤 매개변수도 받지 않습니다.
반환값
deque 컨테이너의 마지막 요소 다음 위치를 가리키는 반복자(iterator)를 반환합니다.
예제 1
입력: deque<int> mydeque = {10, 20, 30, 40};
mydeque.end();
출력:
끝 위치의 값 = 5 // 마지막 요소 다음을 가리키는 임의의 값예제 2: begin()과 end()로 전체 순회하기
#include <deque>
#include <iostream>
using namespace std;
int main(){
deque<int> Deque = { 10, 20, 30, 40};
cout<<"요소들 : ";
for (auto i = Deque.begin(); i!= Deque.end(); ++i)
cout << ' ' << *i;
return 0;
}실행 결과
요소들 : 10 20 30 40
정리
deque::begin()은 컨테이너의 첫 번째 요소를, deque::end()는 마지막 요소의 다음 위치를 가리킵니다. 두 함수는 매개변수 없이 호출되며, 반복문과 함께 사용하면 deque의 모든 요소를 손쉽게 순회할 수 있습니다. 이는 C++ STL의 다른 컨테이너(vector, list 등)에서도 동일하게 적용되는 표준적인 순회 패턴이므로 꼭 기억해 두시기 바랍니다.