1. 덱(deque)의 특징
- 크기가 가변적이다!
리스트(List)와 같이 데이터를 담을 수 있는 크기가 가변적이다.- 앞과 뒤에서 삽입과 삭제가 좋다!
덱(Deque)이 다른 자료구조와 가장 다른 점으로 앞과 뒤에서 삽입,삭제가 좋다.- 중간에 데이터 삽입, 삭제가 용이하지 않다.
데이터를 중간에 삽입하거나 삭제하는 것은 피해야 한다. 삽입과 삭제를 중간에 한다면 삽입하거나 삭제한 위치 앞 뒤 데이터를 모두 이동해야 한다. (배열의 단점과 동일)
- 구현이 쉽지 않다.
덱(Deque)은 스택(Stack)과 큐(Queue)가 결합된 자료구조로 연결리스트보다 구현하기 어렵다..!- 랜덤 접근이 가능하다!
연결리스트처럼 리스트(List)를 탐색하지 않고 원하는 요소에 바로 접근할 수 있다!
2. 덱(deque)을 사용하는 이유
덱(deque)의 특징을 고려할 때 다음과 같은 경우에 사용하면 좋다!
- 앞과 뒤에서 삽입, 삭제를 해야한다.
덱(deque)을 사용하는 가장 큰 이유이다. 대부분 작업이 데이터를 앞이나 뒤를 삽입, 삭제를 한다면 STL컨테이너 라이브러리 중에서 덱(deque)을 사용할 때 성능이 가장 좋다!- 저장할 데이터 개수가 가변적이다.
저장할 데이터 개수를 미리 알 수 없어도 덱(deque)은 크기가 동적으로 변하므로 유연하게 사용할 수 있다.- 검색을 거의 하지 않는다.
많은 데이터를 저장한다면 'map, set, hash_map' 중 하나를 선택해서 사용하는 편이 좋다.- 데이터 접근을 랜덤하게 하고 싶다.
벡터(vector)와 같이 랜덤 접근이 가능하다. 사용하는 방법도 같다.