c++/STL(뇌를 자극하는 STL)
deque의 주요 인터페이스와 특징
로봇0301
2022. 12. 6. 21:38
deque 컨테이너는 vector 컨테이너와 기능과 동작이 비슷한 컨테이너로 vector의 단점을 보완하는 몇 가지 특징을 갖는다.
deque도 vector 컨테이너와 같이 시퀀스 컨테이너이며 배열 기반 컨테이너이다.
템플릿 형식
template<typename T, typename Allocator = allocator<T>>
class deque
생성자
- deque dq: dq는 빈 컨테이너이다.
- deque dq(n): dq는 기본값으로 초기화된 n개의 원소를 갖는다.
- deque dq(n,x): dq는 x값으로 초기화된 n개의 원소를 갖는다.
- deque dq(dq2): dq는 dq2 컨테이너의 복사본이다(복사생성자 호출)
- deque dq(b,e): dq는 반복자 구간[b,e)로 초기화된 원소를 갖는다.
멤버 함수
- dq.assign(n, x): dq에 x 값으로 n개의 원소를 할당한다.
- dq.assign(b, e): dq를 반복자 구간 [b,e)로 할당한다.
- dq.at(i): dq의 i번째 원소를 참조한다(const, 비 const 버전이 있으며 범위 점검을 포함)
- dq.back(): dq의 마지막 원소를 참조한다(const, 비 const 버전이 있음)
- p=dq.begin(): p는 dq의 첫 원소를 가리키는 반복자다(const, 비 const 버전이 있음)
- dq.clear(): dq의 모든 원소를 제거한다
- dq.empty(): dq가 비었는지 확인한다
- p = dq.end(): p는 dq의 끝을 표식하는 반복자다(const, 비 const 버전이 있음)
- q = dq.erase(p): p가 가리키는 원소를 제거한다. q는 다음 원소를 가리킨다.
- q = dq.erase(b,e): 반복자 구간 [b, e)의 모든 원소를 제거한다.
- dq.front(): dq의 첫 번째 원소를 참조한다(const, 비 const 버전이 있음)
- q = dq.insert(p,x): p가 가리키는 위치에 x 값을 삽입한다. q는 삽입한 원소를 가리키는 반복자다
- dq.insert(p, n, x): p가 가리키는 위치에 n개의 x값을 삽입한다.
- dq.insert(p, b, e) 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의 역 순차열의 첫 원소를 가리키는 반복자다(const, 비 const 버전이 있음)
- p=dq.rend(): p는 dq의 역 순차의 끝을 표식하는 반복자다(const, 비 const 버전이 있음)
- dq.resize(n): dq의 크기를 n으로 변경하고 확장되는 공간의 값을 기본값으로 초기화한다.
- dq.size(): dq 원소의 개수다.
- dq.swap(dq2): dq와 dq2를 swap한다.
deque가 vector와 다른 점은 메모리 블록 할당 정책이다. vector의 단점을 해결하기 위해 여러 개의 메모리 블록을 할당하고 사용자에게는 하나의 블록처럼 보이게 하는 정책을 사용한다(연결리스트)
deque에 원소를 추가하는 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<iostream> #include<deque> int main() { std::deque<int> dq; for (auto i = 0; i < 10; i++) { dq.push_back((i + 1) * 10); } for (auto i = 0; i < dq.size(); i++) { std::cout << dq[i] << ' '; } std::cout << std::endl; } | cs |