[C++] [STL] deque 정리 및 예제

2016. 10. 15. 17:35·프로젝트 관련 조사/알고리즘
반응형

출처:http://hyeonstorage.tistory.com/325




deque 컨테이너는 vector 컨테이너와 기능과 동작이 비슷한 컨테이너로 vector의 단점을 보완하는 몇가지 특징을 갖는다.

deque도 vector 컨테이너와 같이 시퀀스 컨테이너이며 배열 기반 컨테이너이다.


[C++/STL] - [STL] vector 벡터 정리 및 예제



템플릿 형식 

 template<typename T, typename Allocator=allocator<T>>

class deque

 T는 deque 컨테이너 원소의 형식



 생성자

 deque dq

dq는 빈 컨테이너이다. 

 deque dq(n)

dq는 기본값으로 초기화된 n개의 원소를 갖는다. 

 deque dq(n,x)

dq는 x 값으로 초기화된 n 개의 원소를 갖는다. 

 deque dq(dq2)

dq는 dq2 컨테이너의 복사본이다. 

 deque dq(b,e)

dq는 반복자 구간 [b,e)로 초기화된 원소를 갖는다. 



멤버 함수 

 dq.assign(n,x)

dq에 x 값으로 n 개의 원소를 할당한다 

 dq.assign(b,e)

dq를 반복자 구간 [b,e)로 할당한다. 

 dq.at(i) 

dq의 i번째 원소를 참조한다. 

 dq.back()

dq의 마지막 원소를 참조한다. 

 p=dq.begin()

p는 dq의 첫 원소를 가리키는 반복자다 

 dq.clear()

dq의 모든 원소를 제거한다. 

 dq.empty()

dq가 비었는지 조사한다. 

 p=dq.end()

p는 dq의 끝을 표식하는 반복자다 

 q=dq.erase(p)

p가 가리키는 원소를 제거한다. q는 다음 원소를 가리킨다. 

 q=dq.erase(b,e)반복자 구간 [b,e)의 모든 원소를 제거한다. q는 다음 원소다 

 dq.front()

dq의 첫 번째 원소를 참조한다. 
 q=dq.insert(p,x)

 p가 가리키는 위치에 x 값을 삽입한다. q는 삽입한 원소를 가리킨다. 

 dq.insert(p, n, x)

p가 가리키는 위치에 n 개의 x 값을 삽입한다. 

 dq.insert(p, b, e)

p가 가리키는 위치에 반복자 구간 [b,e)의 원소를 삽입한다. 

 x=dq.max_size()

x는 dq가 담을 수 있는 최대 원소의 개수이다. 

 dq.pop_back()

 dq의 마지막 원소를 제거한다. 

 dq.pop_front()

dq의 첫 원소를 제거한다. 
 dq.push_back()dq의 끝에 x를 추가한다. 
 dq.push_front()

dq의 앞쪽에 x를 추가한다. 

 p=dq.rbegin()

p는 dq의 역 순차열의 첫 원소를 가리키는 반복자이다. 
 p=dq.rend()p는 dq의 역 순차의 끝을 표식하는 반복자 

 dq.resize(n)

dq의 크기를 n으로 변경하고 확장되는 공간의 값을 기본값으로 초기화한다. 
 dq.resize(n,x)dq의 크기를 n으로 변경하고 확장되는 공간의 값을 x 값으로 초기화한다. 

 dq.size()

dq 원소의 개수다 
 dq.swap(dq2)

dq와 dq2를 swap 한다. 



연산자 

 dq1 == dq2

dq1과 dq2의 모든 원소가 같은가? (bool) 

 dq1!=dq2

dq1과 dq2의 모든 원소 중 하나라도 다른 원소가 있는가? 

 dq1 < dq2

문자열 비교처럼 dq2가 dq1보다 큰가? 

 dq1 > dq2

문자열 비교처럼 dq1이 dq2보다 큰가? 

 dq[i]

dq의 i번째 원소를 참조한다. 


멤버 형식 

 allocator_type

 메모리 관리자 형식 

 const_iterator

 const 반복자 형식

 const_pointer

 const value_type* 형식 

 const_reference

 const value_type& 형식 

 const_reverse_iterator

 const 역 반복자 형식 

 difference_type

 두 반복자 차이의 형식 

 iterator

 반복자 형식 

 pointer

 value_type* 형식 

 reference

 value_type& 형식 

 reverse_iterator

 역 반복자 형식 
 size_type 첨자(index)나 원소의 개수 등의 형식 
 value_type 원소의 형식 


deque 는 vector의 메모리 할당 단점을 해결하기 위해 여러 개의 메모리 블록을 할당하고 사용자에게는 하나의 블록처럼 보이게 하는 정책을 사용한다.


vector는 새로운 원소를 삽입할 때 할당된 메모리가 부족하면 이전 메모리 블록을 삭제하고 새로운 메모리 블록을 재할당하며 이전 원소를 모두 복사하지만, deque는 새로운 단위의 메모리 블록을 할당하고 원소를 삽입한다.

또한, 새로운 원소를 순차열 중간에 삽입 , 제거 하더라도 원소의 개수가 작은 쪽 으로 밀어낸다.


따라서 deque는 vector 보다 효율적으로 동작한다.



 Colored By Color Scripter™

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

int main(){

    deque<int> dq;

    dq.push_back(10);
    dq.push_back(20);
    dq.push_back(30);
    dq.push_back(40); 
    dq.push_back(50);

    for (deque<int>::size_type i = 0; i < dq.size(); ++i){
        cout << dq[i] << ' ';
    }
    cout << endl;

    dq.push_front(100);
    dq.push_front(200);    // 앞에 추가한다.

    for (deque<int>::size_type i = 0; i < dq.size(); ++i){
        cout << dq[i] << ' ';
    }
    cout << endl;


    deque<int>::iterator iter;
    deque<int>::iterator iter2;

    for (iter = dq.begin(); iter != dq.end(); ++iter){
        cout << *iter << ' ';
    }
    cout << endl;

    iter = dq.begin() + 2;            // dq의 3번째 원소에 접근
    iter2 = dq.insert(iter, 500);    // 3번째 원소 자리에 500을 삽입한다.
    cout << *iter2 << endl;

    for (iter = dq.begin(); iter != dq.end(); ++iter){
        cout << *iter << ' ';
    }

    return 0;
}


반응형
저작자표시 (새창열림)

'프로젝트 관련 조사 > 알고리즘' 카테고리의 다른 글

[경로탐색 알고리즘] 큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search) [출처] [경로탐색 알고리즘] 큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search)|작성자 Android Kang  (0) 2016.10.15
[C++] [STL] vector 벡터 정리 및 예제  (0) 2016.10.15
[알고리즘] Backtracking (백트래킹)  (0) 2016.10.14
[알고리즘] Dynamic Programming (동적 계획법)  (0) 2016.10.14
[알고리즘] Divide and Conquer (분할정복)  (0) 2016.10.14
'프로젝트 관련 조사/알고리즘' 카테고리의 다른 글
  • [경로탐색 알고리즘] 큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search) [출처] [경로탐색 알고리즘] 큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search)|작성자 Android Kang
  • [C++] [STL] vector 벡터 정리 및 예제
  • [알고리즘] Backtracking (백트래킹)
  • [알고리즘] Dynamic Programming (동적 계획법)
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    보안가이드
    돈까스
    판교
    수제버거존맛
    상호관세
    런치
    대통령
    마케팅
    이재곧죽습니다
    무역전쟁
    판교역
    쥬쥬랜드
    복리후생
    유니티
    수제버거맛집
    AWS
    맛집
    점심
    판교맛집
    수제버거
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
[C++] [STL] deque 정리 및 예제

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.