C++ STL 프로그래밍(덱)

6. 덱(deque : Double Ended Queue)
- 서버는 클라가 보낸 패킷을 순서대로 처리하므로 STL중 deque 가 적합하다.
- 하지만 현업에서는 더 성능이 빠르길 원하므로 직접 자료구조를 만들어 쓴다.
- 덱 2개를 사용하혀 횟수 제한 없는 undo와 redo 구현 가능
6.1 deque의 자료구조
- 큐(queue)의 자료구조(선입 선출)와 비슷
- OS의 작업 스케줄링처럼 입력 순서대로 처리할 때 큐 사용

- 덱은 앞 뒤에서 삽입 삭제 다 되므로 FIFO와 LIFO 둘 다 사용 가능

6.2 Deque의 특징
1) 크기 가변적
2) 앞 뒤 삽입 삭제 좋다
3) 중간 데이터 삽입, 삭제 안좋다.(앞 뒤 데이터 이동 시켜야 한다)
4) 구현이 어렵다(Stack과 Queue가 결합된 구조로 연결 리스트보다 구현 힘들다)
5) 랜덤 접근 가능하다.
6.3 deque를 사용하는 경우
1) 앞, 뒤에서 삽입 삭제 한다.(STL 중 성능이 가장 좋다)
2) 데이터 개수 가변적
3) 검색을 하지 않는다.(탐색은 느리므로 map, set, hash_map 써라)
4) 데이터 랜덤 접근 시
6.4 deque vs. vector
- 벡터는 삽입 삭제를 뒤에서만 해야 성능이 좋다.
- deque는 삽입 삭제를 뒤에서 해도 벡터보다 성능 좋다.
- 중간 삽입, 삭제는 벡터보다 성능이 구리다.(앞 뒤를 제외하고는 벡터보다 안좋다)

6.5 deque 사용방법
- deque 헤더 파일 포함 : #include <deque>
- 선언 : deque<int> 변수이름;
- 동적할당 : deque<자료형>* 변수이름 = new deque<자료형>;
6.5.1 deque의 주요 멤버들
- 벡터에 없는 pop_front, push_front

6.5.2 기본 사용 멤버

insert, erase
- vector 와 사용법 동일하나, 성능은 벡터보다 안좋다
댓글
댓글 쓰기