
원칙적으로는 STL stack, queue, deque에 인덱스 접근도 불가능하고, 중간에 위치한 자료에 대한 삽입/삭제 등의 연산도 불가능하다. only 앞이나 뒤에서만 가능하다. 즉 중간에 있는 원소에 대한 확인/변경 모두 불가능하다.
또한 vector처럼 초기 크기 할당이 불가능하다.
❗예외 스택, 큐를 구현할 때 배열로 구현하면 가능하지만, STL에서는 불가능하다는 것!
❗중요 하지만 STL deque은 굉장히 특별하다!
deque에서는 인덱스로 원소에 접근할 수 있다.deque에서는 초기 크기 할당도 가능하다.
임의의 인덱스 접근/변경과 초기 크기 할당이 가능하다는 점에서 vector와 비슷해보이지만 분명한 차이가 있다.
대표적으로 deque는 vector와 달리 크기가 할당되지 않아도 처음부터 특정 인덱스에 접근할 수 있다.
그 이유는 vector는 공간을 늘릴 때 배열 자체를 reallocation(재할당)하지만, deque은 일정 크기를 가지는 chunk(덩어리) 단위로 공간을 늘려주기 때문이다.
이에 대한 내용은 공식문서에 더 자세히 나와있다.

vector의 경우 오른쪽 코드의 vector<int> v(5)(5의 크기만큼 0으로 초기화)처럼 크기를 할당해주어야 임의의 원소에 접근할 수 있다.
deque은 chunk 단위로 공간을 가지고 있기 때문이다.그럼 chunk 단위니까 내가 할당한 크기 5 뒤에도 or 크기를 할당하지 않아도 공간이 할당되어 있을 수도 있겠네?
이를 실험하기 위해 이렇게 코드를 짜보자!
deque에 크기 10을 할당해준다.👉 예상되는 결과는
예상이 맞을지 확인해보자!

👉 chunk 단위로 할당할 때 항상 0으로 할당되지는 않는다는 것을 알 수 있다!!
c++ STL에서는 stack, queue와 달리 deque에서는 임의의 인덱스 접근이 가능하고, 크기 할당 또한 가능하다. 이러한 점에서 vector와 비슷하다.
다만 deque이 vector와 다른 점은 chunk 단위로 공간을 할당하기 때문에 초기 공간 할당 없이 인덱스 접근이 가능하다는 것이다. 하지만 공간이 할당될 때 그 값이 항상 0으로 초기화되는 것은 아니다.