본문 바로가기

[ C/ C++ 프로그래밍 ]/[ 알고리즘&자료구조 ]

[ 혼연 정리 ] 시퀀스 컨테이너 - 10 [ 데크]


◎ 데크 (Deque)
 - 양쪽 끝이 있는 큐
 - 양끝에서 삽입, 삭제 가능
 - 주로 메로리 블록을 할당하여 연결해 놓고 양쪽 끝으로 추가할당해 나가는 방식 ==> 컴파일마다 방식이 다름
 - 벡터와 비슷한 특성
 - 양쪽에 끝이 있으므로 앞쪽에서도 삽입, 삭제가 빠르다.  push_front, pop_front 가능
 - reserve, capacity 함수 불필요
 - 내부 구조가 다름으로 인해 삽입, 삭제시의 반복자 무효화 규칙도 차이가 남
 - 앞쪽에서 삽입, 삭제가 베턱보다 훨씬 빠르다.
 -  나머지 연산들은 벡터보다 일반적으로 느리다.
 - 벡터와 데크는 기능적으로 완전히 대체 가능 , 속도의 차이만 있다.
 - 임의 접근 박복자 지원, '[]'연산자로 임의 위치 엑세스 가능,
 - 제공하는 함수 목록 벡터와 거의 동일
 - 생성자는 완전히 같다. inset, delete 등의 함수들도 동일

 ㅇ 간단한 예)

1 #include <iostream>
2 #include <deque>
3
4 using namespace std;
5
6 void main()
7 {
8 deque<int> dq;
9      dq.push_back(8);
10      dq.push_back(9);
11 dq.push_front(2);
12      dq.push_front(1);
13      for (unsigned i=0;i<dq.size();i++) { cout << dq[i]; }
14 }