특징
#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() |