※ std::deque 요약
std::deque는 Double Ended Queue의 약자로써, 시퀀스 컨테이너다.

필자는 시뮬레이터 서버를 제작할 때와 Singleton 방식의 Log Class를 제작할때 std::deque의 사용을 고려해본 적이 있다.


※ std::deque 특징

- 크기가 가변적이다. (사실 std::array를 제외한 거의 모든 STL 컨테이너의 특징이다.)

- 앞(front)과 뒤(back)에서의 삽입, 삭제 성능은 좋지만 중간에서의 삽입, 삭제는 그다지 좋지 않다.

- std::deque는 Stack과 Queue가 결합된 자료구조로써 연결 리스트보다 구현하기가 어렵다.

- std::vector처럼 랜덤 액세스가 가능하다.


※ std::deque와 std::vector
- std::deque와 std::vector의 멤버 함수 기능이나 사용 방법은 거의 동일하다.

- std::vector는 뒤(back)에서의 삽입, 삭제 성능이 좋지만 std::deque는 앞(front), 뒤(back), 모두에서 좋다.

- std::deque의 앞, 뒤 삽입, 삭제 성능을 제외한 다른 위치에서의 삽입, 삭제는 std::vector가 더 좋다.

- 둘 다 랜덤 액세스가 가능하다.

 

※ std::deque를 사용해야 하는 경우

- 앞과 뒤에서 삽입, 삭제를 자주 할 때

- 저장할 데이터의 개수가 가변적 일 때

- 데이터 검색을 거의 하지 않거나, 아예 안 할 때 (검색을 해야 한다면 std::map이나 std::set 등의 연관 컨테이너 사용을 고려)

- 랜덤 액세스를 해야 할때

- 서버처럼 받은 패킷을 차례대로 처리할 때 (이 때는 범용적인 deque보다 좀 더 좋은 성능의 독자적인 자료구조를 만들기도 함)


 

 

+ Recent posts