반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

[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<intvector<int>, less<int> > PQ;        // 큰 값 기준 정렬
priority_queue<intvector<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

+ Recent posts