오븐 노트

[C++] deque 본문

Develop/C++

[C++] deque

오 븐 2023. 6. 26. 18:48
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>

// vector : 동적 배열
// [          ]

// list : 이중 연결 리스트
// [ ] <-> [ ] <-> [ ] <-> [ ]

// deque : double-ended queue 데크
// [     ]

int main()
{
    // 시퀀스 컨테이너 (Sequence Container)
    // 데이터가 삽입 순서대로 나열되는 형태
    // vector list deque

    //deque<int> dq;

    //dq.push_back(1);
    //dq.push_front(2);
    //cout << dq[0] << endl;

    // vector와 마찬가지로 배열 기반으로 동작
    // 다만 메모리 할당 정책이 다르다
    
    // vector
    // [ 1 1 1 ]
    
    // deque
    // [     3 3 ]
    // [ 1 1 1 2 ]
    // [ 2       ]

    vector<int> v(3, 1);
    deque<int> dq(3, 1);

    v.push_back(2);
    v.push_back(2);

    dq.push_back(2);
    dq.push_back(2);

    dq.push_front(3);
    dq.push_front(3);

    // - deque의 동작 원리
    // - 중간 삽입/삭제 -> 앞뒤를 추가하고 제거할때와는 다르게 중간 삽입/삭제는 결국 데이터끼리의 빈 공간이 존재해서는 안되므로 느리다.
    // - 처음/끝 삽입/삭제 -> 데이터 칸 자체를 새로 추가하는 개념이기에 동작이 빠르다
    // - 임의 접근 -> 임의 접근 지원

    dq[3] = 0;
    cout << dq[3] << endl;

    deque<int>::iterator it; // 찾고싶은 데이터를 입력하면 그 데이터의 순서를 계산하여 어느칸 몇번째에 있는지 추적 가능

    return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

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

[C++] map #2  (0) 2023.07.13
[C++] map #1  (0) 2023.07.11
[C++] list #3  (0) 2023.06.09
[C++] list #2  (0) 2023.06.09
[C++] list #1  (0) 2023.06.08