[STL] 덱 deque

Updated:

오늘은 STL 컨테이너 라이브러리 중 하나인 deque$($Double Ended Queue)에 대해서 알아보겠습니다. 이름에서 부터 짐작할 수 있듯이 deque는 큐와 같이 선형 리스트 형태이지만 삽입, 삭제가 front와 back에서 둘다 가능하다는 특징이 있습니다.

[STL] 덱의 맴버함수 및 사용

#include<deque> // 덱이 있는 헤더파일

deque<Data_type> dq;

  • push_front$($) : 덱의 맨 앞에 원소 삽입
  • push_back$($) : 덱의 맨 마지막에 원소 삽입
  • pop_front$($) : 덱의 맨 앞 원소 삭제
  • pop_back$($) : 덱의 맨 마지막 원소를 삭제
  • size$($) : 덱의 총 원소 개수를 반환
  • empty$($) : 덱이 비었으면 true, 아니면 false 반환
  • assign$($) : 특정 원소로 덱을 채운다.
  • clear$($) : 덱의 모든 원소를 삭제
  • insert$($) : 특정 위치에 원소 삽입 $($주로 iterator 이용) deque<Data_type>::iterator iterPos;
  • erase$($) : 특정 위치의 원소나 지정 범위의 원소를 삭제
  • begin$($) : 덱의 첫번째 원소의 랜덤 접근 반복자를 반환
  • end$($) : 덱의 마지막 원소 다음의 반복자를 반환
  • at$($) : 특정 위치의 원소의 참조를 반환
  • front$($) : 덱의 첫번째 원소의 참조를 반환
  • back$($) : 덱의 마지막 원소의 참조를 반환
  • rbegin$($) : 역방향으로 첫번째 원소의 반복자를 반환
  • rend$($) : 역방향으로 마지막 원소의 반복자를 반환
  • reserve$($) : 지정된 크기의 저장공간을 확보
  • swap$($) : 두개의 vector의 원소를 서로 맞바꿈

사용 예제

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

int main(void)
{
    deque<int> dq;
    deque<int>::iterator iter;
    
    dq.push_front(2);
    dq.push_front(1);
    dq.push_back(3);
    dq.push_back(4);
    // dq [1 2 3 4]

    cout<<"덱의 원소수 : "<<dq.size()<<'\n';
    dq.pop_front(); // dq [2 3 4]
    dq.pop_back(); // dq [2 3]

    // 덱의 첫번째 원소에 접근
    iter=dq.begin();
    cout<<"덱의 첫번째 원소는 : "<<*iter<<'\n';
    iter++;
    cout<<"덱의 두번째 원소는 : "<<*iter<<'\n';
    iter++;
    dq.insert(iter,4); // dq [2 3 4]
    cout<<"덱의 추가된 세번째 원소는 : "<<dq.back()<<'\n';

    dq.erase(dq.begin()+1); // dq [2 4]
    cout<<"덱의 2번째 위치의 원소 삭제 : ";
    for(int i=0; i<dq.size(); i++) cout<<dq[i]<<' ';// dq [2 4]

    cout<<'\n';

    dq.push_front(1);
    dq.push_back(5);
    dq.push_back(6);
    // dq [1 2 4 5 6]

    dq.erase(dq.begin()+2, dq.end()); // dq의 3번째~마지막 원소 삭제
    for(int i=0; i<dq.size(); i++) cout<<dq[i]<<' ';// dq [1 2]

    dq.clear(); //덱의 모든 원소 삭제
    if(dq.empty()) cout<<"\n덱이 비었습니다";

    return 0;
}

결과

덱의 원소수 : 4
덱의 첫번째 원소는 : 2
덱의 두번째 원소는 : 3
덱의 추가된 세번째 원소는 : 4
덱의 2번째 위치의 원소 삭제 : 2 4 
1 2 
덱이 비었습니다

풀어보면 좋은 문제

Categories:

Updated:

Leave a comment