본문 바로가기

C++

C++ STL::Deque

728x90

deque에 대해서 처음 알았을때 vector보다 편한 containor임을 보고 느꼈다.

우선 성능적으로도 vector는 새로운 원소가 들어오면 메모리를 재할당해서 이전 원소를 복사하지만

deque는 메모리가 부족할때마다 여러개의 메모리 블록을 할당하므로 이전 원소를 복사할 필요가 없는 구조이다.

 

가장 그리고 (PS를 풀면서 필요하다고 느낀)  pop_front 같은 기능이 있다는 것이다!!(처음 알았다.)

왜냐면 vector에는 없기 때문에..

 

여러모로 vector의 상위호환 구조라고 생각이 든다.

 

  • deque의 선언은 deque<int> dq; 꼴임. deque<data type> name;

deque값의 삭제같은 것은 밑의 iterator를 활용해야 한다. 활용방법은 나중에 수정해서 올리겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <deque>
 
using namespace std;
 
int main() {
    deque<int> dq;
 
    for(int i=0; i<5; i++){
        dq.push_back((i+1*10);
    }
 
    //iterator 선언
    deque<int>::iterator iter;
 
    //[default 출력]
    cout << "[Default] : " ;
    for(iter = dq.begin(); iter != dq.end() ; iter++){
        cout << *iter << " ";
    }
    cout << endl << endl;
 
    //[test1] : 앞 뒤 삽입
    cout << "[Test1] push_front & end : " ;
 
    dq.push_front(1);
    dq.push_front(2);
    dq.push_back(100);
    dq.push_back(200);
 
    for(iter = dq.begin(); iter != dq.end() ; iter++){
        cout << *iter << " ";
    }
    cout << endl ;
 
 
    //[test2] : 역으로 출력
    cout << "[Test2] reverse_iterator : ";
 
    deque<int>::reverse_iterator rIter;
 
    for(rIter = dq.rbegin(); rIter != dq.rend() ; rIter++) {
        cout << *rIter << " ";
    }
    cout << endl ;
    //[test3] : index로 출력
    cout<< "[Test3] print by index: ";
    for(int i=0; i<dq.size(); i++){
        cout<<dq[i]<<" ";
    }
 
 
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

<실행 결과>

[Default] : 10 20 30 40 50

[Test1] push_front & end : 2 1 10 20 30 40 50 100 200
[Test2] reverse_iterator : 200 100 50 40 30 20 10 1 2
[Test3] print by index: 2 1 10 20 30 40 50 100 200
Process finished with exit code 0

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

알고리즘 PS에 유용한 STL 블로그 링크  (0) 2020.01.23
C++ STL:: priority queue  (0) 2020.01.22