c++/ 자료구조&알고리즘 개념 복습하기 - 6 / 덱

한창희·2022년 1월 25일
0
post-custom-banner

< 덱 >


  • 양쪽 끝에서 삽입/삭제 가능한 자료구조


< 덱의 성질>

  • 원소의 추가 = O(1)
  • 원소의 제거 = O(1)
  • 제일 앞/뒤의 원소 확인이 O(1)
  • 제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능
  • !! STL deque 에서는 인덱스로 원소의 접근이 가능 !!
  • STL stack, queue는 인덱스 접근 불가


< STL deque >

  • deque은 vector와 달리 모든 원소들이 메모리 상에 연속적으로 배치되어 있지 않다!
#include <bits/stdc++.h>
using namespace std;

int main(void){
  deque<int> DQ;
  DQ.push_front(10); // 10
  DQ.push_back(50); // 10 50
  DQ.push_front(24); // 24 10 50
  for(auto x : DQ)cout<<x;
  cout << DQ.size() << '\n'; // 3
  if(DQ.empty()) cout << "DQ is empty\n";
  else cout << "DQ is not empty\n"; // DQ is not empty
  DQ.pop_front(); // 10 50
  DQ.pop_back(); // 10
  cout << DQ.back() << '\n'; // 10
  DQ.push_back(72); // 10 72
  cout << DQ.front() << '\n'; // 10
  DQ.push_back(12); // 10 72 12
  DQ[2] = 17; // 10 72 17
  DQ.insert(DQ.begin()+1, 33); // 10 33 72 17
  DQ.insert(DQ.begin()+4, 60); // 10 33 72 17 60
  for(auto x : DQ) cout << x << ' ';
  cout << '\n';
  DQ.erase(DQ.begin()+3); // 10 33 72 60
  cout << DQ[3] << '\n'; // 60
  DQ.clear(); // DQ의 모든 원소 제거
}
profile
매 순간 최선을 다하자
post-custom-banner

0개의 댓글