[STL] Deque 컨테이너

Deque 컨테이너

vector 컨테이너와 비슷하게 동작하지만 앞으로도 삽입과 삭제가 가능한 컨테이너

 

vector와 다른 push_back
vector에서의 push_back은 기존 메모리에 필요한 메모리를 추가한 메모리공간에 원소들을 삽입했지만
deque의 push는 원소가 여러 메모리 블록에 나뉘어 저장된다.

 

Deque의 주요 인터페이스

템플릿 형식  
template <class T, class _Alloc = allocator<T> >
class deque
T는 deque 컨테이너 원소의 형식

 

생성자

생성자
deque dq dq는 빈 컨테이너
deque dq(n) 0원소 n개로 초기화된 컨테이너
deque dq(n, x) x원소 n개로 초기화된 컨테이너
deque dq(dq2) dq는 dq2 컨테이너의 복사본 (복사 생성자 호출)
deque dq(b,2) dq는 반복자 구간 [b, e)로 초기화된 원소를 같는다.

 

멤버함수

멤버함수
dq.assign(n,x) dq에 x값으로 n개의 원소를 할당한다
dq.assign(b,e) dq에 반복자 b부터 e까지 시퀀스 구간으로 할당한다.
dq.at(i) dq에 i번째 원소를 참조한다.
dq.back() dq에 마지막으로 삽입된 원소를 참조한다.
p=dq.begin() p는 dq의 첫 원소를 가리키는 반복자
dq.clear() dq의 모든 원소를 제거한다.
dq.empty() dq가 비어있는지 확인
p=dq.end() p는 dq의 끝을 표시하는 반복자 
q=dq.erase(p) dq의 p가 가리키는 원소를 제거하고 q에는 다음 원소를 넣는다.
q=dq.erase(b,e) dq의 반복자 b부터 e 까지의 시퀀스 구간을 제거하고 q에 다음 원소를 넣는다.
dq.front() dq의 첫번째 원소를 참조한다.
q=dq.insert(p,x) dq에 p가 가리키는 위치에 x를 삽입한다. q는 삽입한 원소를 가리키는 반복자. 
dq.insert(p,n,x) dq에 p가 가리키는 위치에 x를 n개 삽입한다.
dq.insert(p,b,e) dq에 p가 가리키는 위치에 반복자 b부터 e까지의 시퀀스 구간원소를 삽입한다.
x=dq.max_size() x는 dq가 담을 수 있는 최대 원소의 개수다.(메모리 크기)
dq.pop_back() dq에 마지막 원소를 제거한다.
dq.pop_front() dq의 첫 원소를 제거한다.
dq.push_back(x) dq에 x를 가장 뒤에 삽입한다.
dq.push_front(x) dq의 앞에 x를 삽입한다.
p=dq.rbegin() p는 dq의 역 순차열의 첫번째 원소를 가리키는 반복자(reverse begin의 줄임말로 end()와 같다)
p=dq.rend() p는 dq의 역 순차열의 마지막 원소를 가리키는 반복자(reverse end의 줄임말로 begin()와 같다)
dq.reserve(n) n개의 원소를 저장할 공간을 예약한다.
dq.resize(n) dq를 n의 크기로 변경하고 확장되는 공간의 값을 기본값(0)으로 초기화한다. (작아지면 삭제됨)
dq.resize(n, x) dq를 n의 크기로 변경하고 확장되는 공간의 값을 x값으로 초기화한다. (작아지면 삭제됨)
dq.size( ) 원소의 갯수
dq.swap(dq2) dq와 dq2를 swap한다.

 

연산자

연산자
dq1 == dq2 dq1과 dq2의 모든 원소가 같은가 (bool 형식)
dq1 != dq2 dq1과 dq2의 모든 원소 중 하나라도 다른 원소가 있는가? (bool 형식)
dq1 < dq2 dq2가 dq1보다 하나라도 큰 원소가 있는가? (bool 형식)
dq1 <= dq2 dq2가 dq1보다 하나라도 같거나 큰 원소가 있는가? (bool 형식)
dq1 > dq2 dq1이 dq2보다 하나라도 큰 원소가 있는가? (bool 형식)
dq1 >= dq2 dq1이 dq2보다 하나라도 같거나 큰 원소가 있는가? (bool 형식)
dq[i] dq의 i번째 원소를 참조한다. (const와 비 const 버전이 있으며 범위 점검이 없음)

 

멤버형식

멤버형식
allocator_type 메모리 관리자 형식
const_iterator const 반복자 형식
const_pointer const value_type *형식
const_reference const value_type& 형식
const_reverse_iterator const 역 반복자 형식
difference_type 두 반복자 차이의 형식
iterator 반복자 형식
pointer value_type* 형식
reference value_type& 형식
reverse_iterator 역 반복자 형식
size_type 첨자(index)나 원소의 개수 등의 형식
value_type 원소의 형식

'C++ > STL' 카테고리의 다른 글

[STL] 6장 문제풀이  (0) 2025.03.17
[STL] list 컨테이너  (0) 2025.03.16
[STL] Vector 컨테이너  (0) 2025.03.10
[STL] 5장 문제풀이  (0) 2025.03.08
[STL] 할당기  (0) 2025.03.03