Next step -> C++ 복습, deque 알고리즘 문제 풀기
queue는 전에 알고리즘 요세푸스 문제를 풀었기때문에 어떻게 사용하는지, 기능은 어디에서 사용 하면 좋은지는 잘 알지만
프린트 큐 라는 알고리즘 문제를 풀다가 새로운 사용법을 알았다.
#include <utility> // pair가 들어있는 헤더
std::pair<int, int> p = {9, 0}; // {중요도 9, 초기 인덱스 0}
int priority = p.first; // 9
int originalIdx = p.second; // 0
std::pair는 서로 다른(혹은 같은) 타입의 데이터 두 개를 쌍으로 묶어주는 아주 단순한 구조체이다.
데이터 하나에 이름표나 부가 정보를 붙여야 할 때 사용. 첫 번째 데이터는 .first, 두 번째 데이터는 .second로 접근한다.
보다보면 map과의 유사성이 많이 보인다.
std::queue가 선입선출이라면, priority_queue(우선순위 큐)는 값이 큰 순서대로(기본값) 나가는 것이다.
데이터를 넣을(push)때마다 내부적으로 정렬을 수행하여, 가장 큰 값이 항상 맨 위(top)에 오도록 유지한다. O(logN)
queue.front가 아니라 queue.top로 바뀐다.