프로그래밍 언어/C++

[자료구조] deque

가든_ 2023. 6. 4. 21:38

Deque

💡 매우 빠른 push_front()와 push_back() 동작과 효과적인 임의 접근의 제공하는 유일한 컨테이너
  • 덱(deque)은 양방향 큐(double-ended queue)의 약자
  • 양방향으로 매우 빠르게 원소 삽입&삭제 가능
  • 양방향으로 매우 빠르게 확장 가능
  • 모든 원소에 임의 접근을 제공

요구사항

 1. push_front(),pop_front(),push_back(),pop_back() 동작이 O(1)의 시간 복잡도로 동작해야 한다.

 2. 모든 원소에 대해 임의 접근 동작이 O(1) 시간 복잡도로 동작해야 한다.

 3. 덱 중간의 원소 삽입 삭제는 O(n)의 시간 복잡도로 동작해야한다. 

Vector와의 차이점

  • 모든 원소에 접근 가능하다는 점에서 vector와 deque는 비슷하다
  • 하지만 deque는 앞 뒤로 확장 가능하다는 점이 다름
    • 덱은 어느 방향으로든 빠르게 확장 가능
  • 시간 복잡도는 동일하지만, 덱이 벡터 보다 살짝 빠르다

제공 함수

  • 삽입
    • push_front()
    • push_back()
    • insert()
    • emplace_front()
    • emplace_back()
    • emplace()
  • 삭제
    • pop_front()
    • pop_back()
    • erase()
  • 조회
    • begin()
    • shrink_to_fit()
      • 저장 용량 최적화

사용 예시

  • 항공기 탑승 대기열