본 글은 공부용으로 작성된 게시글입니다.
Deque 컨테이너는 시퀀스 컨테이너이자, 배열 기반 컨테이너이다.
그렇기 때문에 Vector 컨테이너와 비슷하게 사용이 가능하다.
다만 배열처럼 선형구조를 가지는 Vector와는 다르게 여러개의 메모리 블록에 나뉘어 저장된다는 특징이 있다.
선형구조(Stack)가 아니기 때문에,
벡터와 달리 push_front() , pop_front() 를 이용해 앞쪽에서도 원소를 추가/제거할 수 있다.
그렇기때문에 중간에 원소 삽입/삭제에 용이하다.
(Stack의 특징을 가지는 Vector는 앞에서 원소를 추가하는 것이 불가능하다)
Vector는 메모리가 가득 찼을 때 이 전의 메모리를 삭제하고 원소를 복사한 후 메모리를 재할당하는 방식을 사용한다.
(그니까 지웠다가 다시 만들고를 반복하게된다.. 말만 들어도 비효율적일듯ㅋㅋ)
하지만 Deque는 단순히 메모리 블럭을 하나 새로 할당하기때문에
push_back을 통해 원소를 추가하는 경우에도 deque가 더 효율적이라고 볼 수 있다.
[사용방법]
Deque 컨테이너를 사용하려면 Vector와 마찬가지로 #inlcude <deque> 를 사용해야한다.
선언
deque<int> d1;
이렇게 vector를 선언했던 것 처럼 deque<자료형> 변수명; 으로 선언하여 사용한다.
메소드
push_back(값) / 원소를 뒤에서 추가
pop_back(값) / 원소를 뒤에서 삭제
push_front(값) / 원소를 앞에서 추가
pop_front(값) / 원소를 앞에서 추가
insert(위치,값) / 중간에 값을 추가 (위치는 index가 아닌 iter값으로 넣어주어야한다 begin())
erase(위치,값) / 중간에 값을 삭제 (위치는 index가 아닌 iter값으로 넣어주어야한다 begin())
front() , back() / 첫번째 값, 마지막 값을 반환한다
원소의 접근은 d[2]나 d.at(3) 으로한다.
[] 와 at() 의 차이는, at()는 범위에서 벗어났는지를 한번 검사해서 []보다는 연산이 느리지만 안전하게 사용이 가능하다는 특징이 있다.
'프로그래밍 > C++' 카테고리의 다른 글
컴파일(Compile) (0) | 2022.11.19 |
---|---|
[C++] STL map 컨테이너 (0) | 2022.10.25 |
비트연산자 (1) | 2022.09.05 |
함수포인터 (0) | 2022.08.25 |
Lvalue Rvalue (0) | 2022.08.23 |
댓글