[C++] Deque

yeolife ㅣ 2023. 7. 4. 23:19

특징

#include <deque>
  • Heap 영역에 동적할당
  • vector와 멤버함수가 거의 같지만 deque는 capacity 멤버함수가 없음
  vector deque
차이점 새로운 원소가 추가 될때 메모리 재할당 후,
이전 원소를 
복사하는 방식이므로 삽입 시 성능 저하
메모리가 부족할 때마다 새로운 메모리 블록을 할당하여, 
이전 원소를 복사 하지 않기 때문에 vector의 
단점 보완

 

생성

설명 코드
1차원 덱 생성 deque<int> dq
N개의 0을 가진 덱 생성 deque<int> dq(N, 0)
dq2를 복사한 덱 생성 deque<int> dq(dq2)

 

참조 및 반복자

설명 코드
i번째 원소를 참조(범위 점검o) dq.at(i)
i번째 원소를 참조(범위 점검x) dq[i]
첫번째 원소 참조 dq.front()
*dq.begin()
마지막 원소 참조 dq.back()
첫번째 원소의 주소값 dq.begin()
마지막 원소의 다음 주소값 dq.end()
마지막 원소의 주소값을 시작점으로 설정 dq.rbegin()
첫번째 원소의 주소값을 끝점으로 설정 dq.rend()

 

수정자

설명 코드
N개의 0을 벡터에 할당 dq.assign(N, 0)
i번째 위치에 0을 삽입 dq.insert(i, 0)
i번째 위치에 N개의 0를 밀어서 삽입 dq.insert(i, N, 0)
iter가 가리키는 원소를 제거 dq.erase(iter)
첫번째 원소 앞에 0을 삽입 dq.push_front(0)
마지막 원소 뒤에 0을 삽입 dq.push_back(0)
첫번째 원소 제거 dq.pop_front()
마지막 원소 제거 dq.pop_back()
모든 원소 제거 dq.clear()

 

크기

설명 코드
덱의 크기 반환 dq.size()
크기를 N으로 재할당
※ 크기가 더 커지면 0 할당
dq.resize(N, 0)
N개의 원소 공간을 미리 할당 dq.reserve(N)
덱이 비어있으면 True, 아니면 False를 반환 dq.empty()