본문 바로가기
개발/C++

C++ 자료구조 - Deque

by devsu 2020. 6. 21.

Deque

- LIFO, FIFO 두 가지 방식을 다 사용할 수 있는 스택큐 짬뽕.

- VECTOR는 끝부분에 삽입할 때만 빠르지만 덱은 앞뒤로 다 빠름. 하지만 중간에 삽입 삭제 시 벡터처럼 밀거나 땡겨야되는 단점을 가진다.(여러개의 블록을 할당하므로)

 

1. 사용

- #include <deque>

- deque<[Data Type]> [변수이름]

 

2. 생성자와 연산자(int로)

 - vector<int> v;

   - 비어있는 vector v를 생성

 

 - vector<int> v(5);

   - 0으로 초기화 된 5개의 원소를 가지는 vector v를 생성

 

 - vector<int> v(5,2);

   - 2으로 초기화 된 5개의 원소를 가지는 vector v를 생성

 

3. 멤버 함수

- dq.assign(5,2);

   - 2의 값으로 5개의 원소 할당

- dq.at(idx);

   - idx번째 원소를 참조.

   - dq[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전

 

- dq[idx];

   - idx번째 원소를 참조.

   - dq[idx] 보다 속도는 빠르지만, 범위를 점검하지 않음

 

- dq.front();

   - 첫번째 원소를 참조.

 

- dq.back();

   - 마지막 원소를 참조.

 

- dq.clear();

   - 모든 원소 제거

 

- dq.push_front(3);

  - dq의 첫번째 원소 앞에 원소 3을 삽입

- dq.pop_front();

  - dq의 첫 번째 원소를 제거

 

- dq.push_back(7);

   - 마지막 원소 뒤에 원소 7을 삽입

 

- dq.pop_back();

   - 마지막 원소를 제거.

 

- dq.begin();

  - 첫번째 원소를 가리킴(iterator 반환)

 

- dq.end();

  - 마지막 원소를 가리킴(iterator 반환)

 

- dq.rbegin();

  - reverse 첫번째 원소를 가리킴(iterator 반환)

 

- dq.rend();

  - reverse 마지막 원소를 가리킴(iterator 반환)

 

- dq.resize(n);

  - 크기를 n으로 변경(비어있는 원소는 0으로 초기화)

 

- dq.resize(n,2);

  - 크기를 n으로 변경(비어있는 원소는 2로 초기화)

 

- dq.size();

   - 원소의 갯수를 리턴

 

- dq2.swap(dq1)

  - dq1과 dq2의 원소를 바꿔줌

 

- dq.insert(2,3);

  - 2번째 위치에 3의 값을 삽입

 

- dq.insert(2, 3, 4);

  - 2번째 위치에 3개의 4값을 삽입

 

- dq.erase(iter);

  - iter가 가리키는 원소를 제거

 

- dq.empty();

  - dq가 비어있으면 true를 반환

 

아래 링크 설명이 좋아 직접 타이핑하면서 외우는중

출처

https://blockdmask.tistory.com/73?category=249379

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

C++ 자료구조 - Stack  (0) 2020.06.23
C++ 자료구조 - unordered map(hash map)  (0) 2020.06.22
C++ 자료구조 - Set  (0) 2020.06.21
C++ 자료구조 - Map  (0) 2020.06.21
C++ 자료구조 - List  (0) 2020.06.19