덱(deque)이란?
덱(deque)이란, double-ended-queue의 줄임말로, 큐의 양쪽에서 원소를 삽입하거나 삭제할 수 있는 자료구조이다. 덱은 C++에서 많이 쓰이는 STL 자료구조 중 하나이다.
1. 헤더파일
#include <deque>
using namespace std;
deque를 사용하기 위해서는 <deque> 헤더파일을 include 시켜주어야 한다.
STL deque는 std namespace에 있기 때문에 cin이나 cout을 사용할 때와 같이 using namespace std;를 써주면 std::를 일일이 써주지 않아도 되어 편리하다.
2. deque 선언하기
deque<데이터 타입> 이름;
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> dq; //D라는 이름을 가진 비어있는 정수형 덱을 선언한다.
}
3. deque의 주요 참조 메소드
dq.assign(n,k); | 덱 dq의 원소 n개를 k로 초기화 |
dq.at(i); | 덱 dq의 i번째 원소를 반환 |
dq.begin(); | 덱 dq의 첫 번째 원소의 위치 반환 |
dq.end(); | 덱 dq의 마지막 원소의 다음 위치 반환 |
dq.front(); | 덱 dq의 첫 번째 원소를 반환 |
dq.back(); | 덱 dq의 마지막 원소를 반환 |
dq.empty(); | 덱 dq이 비어있으면 true, 아니라면 false 반환 |
dq.size(); | 덱 dq의 원소 수 반환 |
4. deque 원소 삽입하기
dq.push_front(k); | 덱 dq의 맨 앞에 원소 k를 삽입 |
dq.push_back(k); | 덱 dq의 맨 뒤에 원소 k를 삽입 |
dq.insert(dq.begin() + i, k); | 덱 dq의 인덱스 i 위치에 k를 삽입 |
5. deque 원소 삭제하기
dq.pop_front(); | 덱 dq의 맨 앞 원소를 삭제 |
dq.pop_back(); | 덱 dq의 맨 뒤 원소를 삭제 |
dq.erase(i); | 덱 dq의 i번째 원소를 삭제 |
dq.clear(); | 덱 dq의 모든 원소를 한번에 삭제 |
6. deque 예시 코드
#include <iostream>
#include <string>
#include <cmath>
#include <deque>
using namespace std;
int main()
{
deque<int> dq; //정수형 덱 dq 선언
dq.push_back(10); //덱의 맨 뒤에 10 삽입
dq.push_back(20); //덱의 맨 뒤에 20 삽입
dq.push_front(5); //덱의 맨 앞에 5 삽입
dq.push_back(30);
cout << dq.front() << endl; //덱의 맨 앞 원소 5 출력
dq.pop_front(); //덱의 맨 앞 원소 5 삭제
cout << dq.front() << endl; //덱의 맨 앞 원소 10 출력
if (dq.empty() != 1)
cout << "Not Empty!" << endl;
else
cout << "Empty!" << endl;
//반복문을 활용하여 배열처럼 덱의 모든 원소에 순차적으로 접근이 가능하다.
for (int i = 0; i < dq.size(); i++) {
cout << "덱의 " << i << "번째 원소 : " << dq.at(i) << endl;
}
dq.clear(); //덱의 모든 원소 삭제
if (dq.empty() != 1)
cout << "Not Empty!" << endl;
else
cout << "Empty!" << endl;
}
'C++' 카테고리의 다른 글
[C++] - string → int 로 형변환하기 (1) | 2024.01.12 |
---|---|
[C++] - int → string 으로 형변환하기 (1) | 2024.01.10 |
[C++] - vector를 2차원으로 사용하기 (STL) (1) | 2024.01.08 |
[C++] - vector 사용법 정리 (STL) (1) | 2024.01.06 |
[C++] - sort()함수 사용법 정리(STL) (1) | 2024.01.02 |