앞에서 배열을 이용해 큐를 직접 구현해보았다.
이번에는 C++에서 제공하는 표준 템플릿 라이브러리(STL)을 이용해보자.
STL은 프로그래밍에서 공통적으로 사용되는 자료구조와 알고리즘에 대한 클래스이다.
템플릿을 기반으로 작성되었기 때문에 어떤 자료형(사용자 정의 자료형 포함)에도 사용할 수 있다.
큐 템플릿 queue를 사용하려면 소스 코드에 헤더파일을 포함시키면 된다.
#include <queue>
using namespace std;
// queue<자료형> 이름;
queue<data_type> queue_name;
queue의 멤버 함수
void push(const value_type& val);
void push(value_type&& val);
가장 최근에 삽입된 위치 뒤에 전달받은 val을 삽입한다.
void pop();
가장 먼저 삽입된 데이터를 삭제한다.
직접 구현했을 때와 다르게 삭제 후 반환하지는 않는다.
reference& front();
const_reference& front() const;
가장 먼저 삽입된 데이터를 반환한다.
reference& back();
const_reference& back() const;
가장 최근에 삽입된 데이터를 반환한다.
size_type size() const;
queue의 요소 개수를 반환한다.
bool empty() const;
queue가 비어있다면 true, 비어있지 않다면 false를 반환한다.
(이외에도 queue의 멤버 함수가 있지만 생략했음, 아래 링크에서 다른 멤버 함수들도 확인할 수 있음)
https://cplusplus.com/reference/queue/queue/
https://cplusplus.com/reference/queue/queue/
container_typeThe second template parameter (Container)Type of the underlying container
cplusplus.com
STL 큐 활용
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
STL 큐를 활용해 백준 10845번 큐 기본 문제를 풀어보았다.
#include <iostream>
#include <queue>
#include <string>
using namespace std;
#define endl '\n'
int N;
queue<int> q;
string command;
int main() {
cin.tie(NULL); ios_base::sync_with_stdio(false);
cin >> N;
while (N--) {
cin >> command;
if (command == "push") {
int X; cin >> X;
q.push(X);
}
else if (command == "pop") {
if (q.empty()) cout << -1 << endl;
else {
cout << q.front() << endl;
q.pop();
}
}
else if (command == "size") {
cout << q.size() << endl;
}
else if (command == "empty") {
cout << q.empty() << endl;
}
else if (command == "front") {
if (q.empty()) cout << -1 << endl;
else cout << q.front() << endl;
}
else {
if (q.empty()) cout << -1 << endl;
else cout << q.back() << endl;
}
}
return 0;
}
'Computer Science > Data Structure' 카테고리의 다른 글
4-1. [C++] 연결 리스트를 위한 준비(자기 참조, 동적 메모리 할당) (0) | 2023.07.10 |
---|---|
3-6. [C++] 덱 STL (0) | 2023.07.05 |
3-4. [C++] 배열로 구현한 덱 (0) | 2023.07.05 |
3-3. [C++] 배열로 구현한 큐 (0) | 2023.07.05 |
3-2. 큐의 구현 방법 (0) | 2023.07.04 |