덱은 벡터와 리스트에서 제공되는 함수를 조합한 것 이상의 기능을 제공합니다. 덱은 push_front(), push_back(), insert(), emplace_front(), emplace_back(), emplace(), pop_front(), pop_back(), erase() 등의 함수를 제공합니다. 또한 벡터에서 저장 용량 최적화를 위해 사용하는 shrink_to_fit() 같은 함수도 지원합니다. 그러나 capacity() 함수는 구현 방법에 의존적일 수 있으므로 지원되지 않습니다. 그리고 벡터와 같은 임의 접근 반복자도 당연히 제공됩니다.
std::deque을 이용하여 원소를 삽입하거나 삭제하는 다양한 방법에 대해 알아보겠습니다.
std::deque<int> deq = {1, 2, 3, 4, 5};
deq.push_front(0); // 맨 앞에 0 추가: {0, 1, 2, 3, 4, 5}
deq.push_back(6); // 맨 뒤에 6 추가: {0, 1, 2, 3, 4, 5, 6}
deq.insert(deq.begin() + 2, 10);
// 맨 앞에서 2칸 뒤에 10 추가: {0, 1, 10, 2, 3, 4, 5, 6}
deq.pop_back(); // 맨 뒤 원소 삭제: {0, 1, 10, 2, 3, 4, 5}
deq.pop_front(); // 맨 앞 원소 삭제: {1, 10, 2, 3, 4, 5}
deq.erase(deq.begin() + 1); // {1, 2, 3, 4, 5}
deq.erase(deq.begin() + 3, deq.end()); // {1, 2, 3}