Queue는 앞으로는 삭제, 뒤로는 삽입을 할 때 사용합니다.OS의 작업 스케줄링처럼 입력 순서대로 처리를 할 때 Queue를 사용하면 좋습니다. Deque과 Queue와 다른 점은 삽입과 삭제를 한쪽이 아닌 앞, 뒤 양쪽에서 할 수 있다는 것만 다르며 Queue와 같습니다.
  | deque | vector |
---|---|---|
크기 변경 가능 | O | O |
앞에 삽입, 삭제 용이 | O | X |
뒤에 삽입, 삭제 용이 | O | O |
중간 삽입, 삭제 용이 | X | X |
순차 접근 가능 | O | O |
랜덤 접근 가능 | O | X |
#includedeque 형식은 아래와 같습니다.
deque< 자료 type > 변수 이름int를 사용하는 deque 선언은 아래와 같습니다.
deque< int > deque1;deque도 동적 할당을 할 수 있습니다.
deque< 자료 type >* 변수 이름 = new deque< 자료 type >; deque< int >* deque1 = new deque< int >;
멤버 | 설명 |
---|---|
assign | 특정 원소로 채운다 |
at | 특정 위치의 원소의 참조를 반환 |
back | 마지막 원소의 참조를 반환 |
begin | 첫 번째 원소의 랜던 접근 반복자를 반환 |
clear | 모든 원소를 삭제 |
empty | 아무것도 없으면 true 반환 |
End | 마지막 원소 다음의(미 사용 영역) 반복자를 반환 |
erase | 특정 위치의 원소나 지정 범위의 원소를 삭제 |
front | 첫 번째 원소의 참조를 반환 |
insert | 특정 위치에 원소 삽입 |
pop_back | 마지막 원소를 삭제 |
pop_front | 첫 번째 원소를 삭제 |
push_back | 마지막에 원소를 추가 |
push_front | 제일 앞에 원소 추가 |
rbegin | 역방향으로 첫 번째 원소의 반복자를 반환 |
rend | 역방향으로 마지막 원소 다음의 반복자를 반환 |
reserve | 지정된 크기의 저장 공간을 확보 |
size | 원소의 개소를 반환 |
swap | 두 개의 vector의 원소를 서로 맞바꾼다 |
멤버 | 원형 | 설명 |
---|---|---|
at |
reference at( size_type _Pos ); const_reference at( size_type _Pos ) const; |
특정 위치의 원소의 참조를 반환 |
back |
reference back( ); const_reference back( ) const; |
마지막 원소의 참조를 반환 |
begin |
const_iterator begin() const; iterator begin(); |
첫 번째 원소의 랜던 접근 반복자를 반환 |
clear | void clear(); | 모든 원소를 삭제 |
empty | bool empty() const; | 아무것도 없으면 true 반환 |
end |
iterator end( ); const_iterator end( ) const; |
마지막 원소 다음의(미 사용 영역) 반복자를 반환 |
front |
reference front( ); const_reference front( ) const; |
첫 번째 원소의 참조를 반환 |
pop_back | void pop_back(); | 마지막 원소를 삭제 |
pop_front | void pop_front( ); | 첫 번째 원소를 삭제 |
push_back | void push_back( const Type& _Val ); | 마지막에 원소를 추가 |
push_front | void push_front( const Type& _Val ); | 제일 앞에 원소 추가 |
rbegin |
reverse_iterator rbegin( ); const_reverse_iterator rbegin( ) const; |
역방향으로 첫 번째 원소의 반복자를 반환 |
rend |
const_reverse_iterator rend( ) const; reverse_iterator rend( ); |
역방향으로 마지막 원소 다음의 반복자를 반환 |
size | size_type size() const; | 원소의 개수를 반환 |
deque< int > deque1; deque1.push_front( 100 );뒤에 추가할 때는 push_back()을 사용합니다.
deque< int > deque1; deque1.push_back( 200 );삭제
deque1.pop_front();뒤에서 삭제를 할 때는 pop_back()를 사용합니다.
deque1.pop_back();접근
deque< int >::iterator IterBegin = deque1.begin(); cout << *IterBegin << endl;반복자로 다른 원소에 접근을 할 때는 반복자에 ‘++’ 이나 ‘–-‘을 사용합니다.
deque< int >::iterator IterPos = deque1.begin(); // 두 번째 위치로 이동 ++IterPos; // 첫 번째 위치로 이동 --IterPos;end()는 deque에 저장된 원소 중 마지막 다음 위치, 즉 사용하지 못하는 영역을 가리킵니다. 보통 반복문에서 컨테이너에 남은 원소가 있는지 조사할 때 주로 사용합니다.
deque< int >::iterator IterEnd = deque1.end(); for(deque< int >::iterator IterPos = deque1.begin; IterPos != IterEnd; ++IterPos ) { …… }첫 번째 위치에 있는 데이터를 얻을 때는 front(), 마지막 위치에 있는 데이터를 얻을 때는 back()을 사용합니다.
int& FirstValue = deque1.front(); int& LastValue = deque1.back();begin()과 end()는 순방향으로 앞과 뒤를 가리키고, 역방향으로는 rbegin()과 rend()를 사용합니다. 특정 위치에 있는 데이터를 얻을 때는 at()이나 배열 식 접근([])을 사용합니다.
int& Value2 = deque1.at(1); // 두 번째 위치 int Value3 = deque1[2]; // 세 번째 위치모두 삭제
deque1.clear();데이터 저장 여부
bool bEmpty = deque1.empty();저장된 원소 개수 조사
deque< int >::size_type TotalCount = deque1.size();지금까지 설명한 deque 멤버들의 사용법을 보면 전 회에 설명한 vector와 같다는 것을 충분히 알 수 있을 것입니다. vector를 공부하신 분들은 아주 쉽죠? ^^ 이후에 소개하는 내용도 vector에서 설명한 것과 같으니 편안하게 잘 따라와 주세요.
최신 콘텐츠