이 게시물은 다음 링크를 참조하여 학습했습니다.
[C++][STL] Queue 기본 사용법 및 예제
인트로 안녕하세요. 오늘은 C++의 STL중 하나인 Queue(큐) 기본 함수에 대해서 알아보도록 하겠습니다. Queue 는 자료구조의 대표적인 FIFO(First In First Out)인 알고리즘으로, 코딩테스트에 많이 나오는
life-with-coding.tistory.com
[C++] deque container 정리 및 사용법
<목차> 1) deque container 2) deque의 사용 3) deque의 생성자와 연산자 4) deque의 멤버 함수 5) 다양한 예제 1) deque container deque는 vector의 단점을 보완하기 위해서 만들어진 container 입니다. deq..
blockdmask.tistory.com
[C++ STL] Priority_queue 사용법
본 글은 여러 PS 문제를 접하다 보면 우선순위 큐를 적극적으로 사용해야 되는 경우가 있는데 매번 구글링을 하게 되는 것 같아 우선순위 큐에 대한 기본적인 사용법뿐만 아니라 기본적인 자료
kbj96.tistory.com
1. queue?
queue는 FIFO(First-In-First-Out)의 형태를 갖는 자료구조이다.
쉽게 생각하면 한 방향으로 갈 수 있는 터널을 생각하면 된다.
들어갈때는 뒤에서 들어가고, 나올때는 앞에서 나오면서 가장 먼저 들어간 값이 가장 먼저 나온다.
queue를 사용하려면 아래처럼 사용하면 된다.
1
2
3
|
#include <queue>
queue<int> Q;
|
cs |
1-1. 멤버함수
queue의 멤버함수에 대한 자세한 설명은 아래 링크에서 확인할 수 있다.
std::queue - cppreference.com
template< class T, class Container = std::deque > class queue; The std::queue class is a container adaptor that gives the programmer the functionality of a queue - specifically, a FIFO (first-in, first-out) data structure. The class template ac
en.cppreference.com
이번 게시물에서는 내가 자주 사용하는 멤버함수만 정리했다.
함수 | 설명 |
void push(value); | 큐에 value를 넣어준다. |
void pop(); | 큐에서 제일 앞단의 value 하나를 제거한다. |
value front(); | 큐에서 제일 앞단의 value를 반환한다. |
int size(); | 큐의 사이즈를 반환한다. |
bool empty(); | 큐가 비어있는지 확인한다. |
2. deque?
deque는 Double ended queue의 약자로, 한국말로 해석하면 "양방향 큐"이다.
큐의 삽입/삭제가 한방향만 가능한것에 반해, 덱은 양방향 삽입/삭제가 가능하다.
또한, 큐와 스택에서 불가능했던 at(), []를 사용한 인덱스 참조도 가능하다.
vector를 사용할 바에 deque를 사용하는게 낫지 않냐 할수도 있겠지만, 자료를 뒤에서만 삽입하고 단순히 배열의 용도로만 사용할꺼면 vector를 사용하는게 낫다고 한다.
이 내용에 대해서는 따로 정리를 하려한다.
deque를 사용하려면 아래처럼 사용하면 된다.
1
2
3
|
#include <deque>
deque<int> DQ;
|
cs |
2-1. 멤버함수
deque의 멤버함수에 대한 자세한 설명은 아래 링크에서 확인할 수 있다.
deque - C++ Reference
difference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t
www.cplusplus.com
이번 게시물에서는 내가 자주 사용하는 멤버함수만 정리했다.
함수 | 설명 |
iterator begin(); | 덱의 첫번째 값을 가리키는 반복자 |
iterator end(); | 덱의 마지막 값의 다음을 가리키는 반복자 |
int size(); | 덱의 사이즈를 반환한다. |
value at(int position); | 덱의 position 위치의 값을 반환한다. 유효한 값인지 판별 하기 때문에 안정적이지만 시간복잡도 ↑ |
operator [int position]; | 덱의 position위치의 값을 반환한다. 값 판별이 없기때문에 시간복잡도 ↓, 사용자가 값 판별 해줘야 함 |
void erase(iterator position); | 덱의 position에 해당하는 위치의 값을 삭제한다. |
void push_back(value); | 덱의 맨 뒤에 value를 넣어준다. |
void push_front(value); | 덱의 맨 앞에 value를 넣어준다. |
void pop_back(); | 덱의 맨 뒤 값을 삭제한다. |
void pop_front(); | 덱의 맨 앞 값을 삭제한다. |
value front(); | 덱의 첫번째 value를 반환한다. |
value back(); | 덱의 마지막 value를 반환한다. |
bool empty(); | 덱이 비어있는지 확인한다. |
3. priority_queue?
priority_queue는 우리말로 하면 "우선순위 큐"이다.
우선순위 큐를 사용하면 모든 원소중에 가장 큰/작은 값이 top()에 위치하도록 할 수 있다.
내부적으로는 벡터로 설계되어 있는데, Heap자료구조를 프로그램적으로 사용하는 것이라 생각하면 이해가 쉽다.
priority_queue는 아래처럼 사용한다!
1
2
3
4
5
6
|
#include <queue>
priority_queue<int> PQ; // 기본( 큰 값 기준 정렬)
priority_queue<int, vector<int>, less<int> > PQ; // 큰 값 기준 정렬
priority_queue<int, vector<int>, greater<int> > PQ; // 작은 값 기준 정렬
|
cs |
3-1. 멤버함수
priority_queue의 멤버함수에 대한 자세한 설명은 아래 링크에서 확인할 수 있다.
std::priority_queue - cppreference.com
template< class T, class Container = std::vector , class Compare = std::less > class priority_queue; A priority queue is a container adaptor that provides constant time lookup of the largest (by default) element, at the expense of logarit
en.cppreference.com
이번 게시물에서는 내가 자주 사용하는 멤버함수만 정리했다.
함수 | 설명 |
void push(value); | 우선순위 큐에 value를 삽입한다. |
void pop(); | 우선순위 큐에서 top()의 원소를 제거한다. |
value top(); | 우선순위 큐에서 최상단의 value를 반환한다. |
int size(); | 우선순위 큐의 사이즈를 반환한다. |
bool empty(); | 우선순위 큐가 비어있는지 확인한다. |
'Legacy' 카테고리의 다른 글
[C++#5-5] map (2) | 2022.04.18 |
---|---|
[C++#5-4] set (0) | 2022.04.18 |
[C++#5-2] stack (0) | 2022.04.18 |
[C++#5-1] vector (0) | 2022.04.18 |
[C++#5] 자료구조 (0) | 2022.04.18 |