본문 바로가기

Info/Data Structure

[C++]deque

728x90
deque 생성
  • deque a;
    deque a 생성
  • deque a(n);
    크기가 n인 deque a 생성
  • deque a(n, m);
    크기가 n이고 값이 m으로 초기화된 deque a 생성
  • deque b; and deque a(b);
    deque b의 값을 가진 deque a 생성
deque 멤버 함수
  • a[idx];
    vector처럼 idx로 원소 접근 가능
  • a.front();
    배열의 첫 번째 원소를 참조
  • a.back();
  • 배열의 마지막 원소를 참조
  • a.pop_front();
    배열의 첫 번째 원소를 제거
  • a.pop_back();
    배열의 마지막 원소를 제거
  • a.push_front(n);
    배열의 앞에 원소 n 삽입
  • a.push_back(n);
    배열의 뒤에 원소 n 삽입
  • a.size();
    배열의 크기를 리턴
  • a.clear();
    배열의 모든 원소 제거
  • a.empty();
    deque a가 비어있을 경우 true 리턴 아니면 false 리턴
  • a.insert(n, m);
    배열의 n번 인덱스에 m값을 삽입
  • a.erase(n);
    deque의 n의 위치의 원소를 제거

deque 특징

 

vector와 유사한 기능을 가지고 있지만 vector의 경우 첫번째 원소를 제거하거나 삽입할 때 시간 복잡도가 O(n)이지만 deque는 시간 복잡도가 O(1)이다.

 

deque 사용 예시

 

#include <iostream>
#include <deque>
using namespace std;


int main() {
    deque<int> numbers;

    numbers.push_back(3);
    numbers.push_back(4);
    numbers.push_back(5);
    numbers.push_front(2);
    numbers.push_back(1);

    // 앞에서부터 원소 출력
    cout << "Forward: ";
    for (int num : numbers) {
        cout << num << " ";
    }
    cout << endl;

    // 뒤에서부터 원소 출력
    cout << "Reverse: ";
    for (auto it = numbers.rbegin(); it != numbers.rend(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    // 첫 번째 원소 제거 후 출력
    numbers.pop_front();
    cout << "After pop_front(): ";
    for (int num : numbers) {
        cout << num << " ";
    }
    cout << endl;

    // 마지막 원소 제거 후 출력
    numbers.pop_back();
    cout << "After pop_back(): ";
    for (int num : numbers) {
        cout << num << " ";
    }
    cout << endl;

    return 0;
}

 

실행 결과 :
Forward: 2 3 4 5 1
Reverse: 1 5 4 3 2
After pop_front(): 3 4 5 1
After pop_back(): 3 4 5

 

728x90