덱(dequeue, Double Ended Queue)
큐와 달리 선입선출(FIFOI)가 아닌 front, back 양쪽 모두 삽입, 삭제가 가능하며 front,back위치가 아닌 원소도 조회가 가능하다.
#include <deque> 헤더파일을 필요로 함
덱 선언
deque<데이터타입> 덱이름;
덱 back위치에 원소 삽입
push_back(원소);
덱 front위치에 원소 삽입
push_front(원소);
덱 front위치의 원소 삭제
pop_front();
덱 back위치의 원소 삭제
pop_back();
덱 첫 번째 원소 반환
front();
덱 마지막 원소 반환
back();
덱이 비어있는지 확인 (0,1)
empty();
덱의 사이즈 반환(숫자)
size();
덱의 n번째 인덱스 원소 반환
at(인덱스);
덱에서 표현되는 iterator
begin(); // 맨 앞 원소 위치를 나타내는 iterator
end(); // 맨 뒤 원소 위치를 나타내는 iterator
원하는 위치에 원소a 삽입
insert(iterator로 표현된 인덱스. 원소a); //인덱스는 iterator로 표현해야 함
원하는 위치의 원소 삭제
erase(iterator로 표현된 인덱스);
원소 n개를 a로 초기화
assign(n, a); //기존에 있던 원소들도 초기화
덱 내 모든 원소 삭제, 초기화
clear();
덱 메모리 공간사이즈 변경 (늘어난 부분은 0으로 초기화)
resize();
#include <iostream>
#include <deque> //덱을 사용하기 위한 헤더파일
using namespace std;
int main() {
deque<int> deq; //덱 선언 - deque<데이터타입> 덱이름;
deq.push_back(1); deq.push_back(2); //덱 back위치에 원소 삽입 - push_back(원소);
deq.push_front(3); deq.push_front(4); //덱 front위치에 원소 삽입 - push_front(원소);
// 덱 내 원소 위치 : 4, 3, 1, 2
deq.pop_front(); //덱 front위치의 원소 삭제 - pop_front();
// 원소 4 삭제
deq.pop_back(); //덱 back위치의 원소 삭제 - pop_back();
// 원소 2 삭제
cout << deq.front() << endl; //덱 첫 번째 원소 반환 - front();
// 출력 : 3
cout << deq.back() << endl; //덱 마지막 원소 반환 - back();
// 출력 : 1
cout << deq.empty() << endl; //덱이 비어있는지 확인 (0,1) - empty();
// 출력: 0 (false)
cout << deq.size() << endl; //덱의 사이즈 반환(숫자) - size();
// 출력 : 2
cout << deq.at(0) << endl; //덱의 n번째 인덱스 원소 반환 - at(인덱스);
// 출력 3
deq.insert(deq.begin()+1, 5); //원하는 위치에 원소a 삽입 - insert(iterator로 표현된 인덱스. 원소a); //인덱스는 iterator사용해야 함)
cout << deq.at(1) << endl; //5가 제대로 들어갔는지 확인
//출력 : 5
deq.erase(deq.begin()); //원하는 위치의 원소 삭제 - erase(iterator로 표현된 인덱스)
cout << deq.front() << endl; //맨 앞 원소였던 3이 제대로 삭제됐는지 확인
//출력 : 5
deq.assign(2, 7); // 원소 n개를 a로 초기화 - assign(n, a); //기존에 있던 원소들도 초기화
// 덱 : 7 7
cout << deq.at(0) << " " << deq.at(1) << endl; // 현재 덱의 size가 2이므로 2이상의 인덱스 접근 불가
// 출력 : 7 7
deq.clear(); //덱 내 모든 원소 삭제, 초기화
return 0;
}
'Programming > C++' 카테고리의 다른 글
C++ STL 페어(pair) 사용법 (0) | 2021.10.22 |
---|---|
C++ STL 벡터(vector) 사용법 (0) | 2021.10.22 |
C++ STL 큐(queue) 사용법 (0) | 2021.10.22 |
C++ STL 스택(stack) 사용법 (0) | 2021.10.22 |
[C++] cin, cout 시간 줄이기 (0) | 2021.09.20 |