디폴트는 less<>이고, 큰값이 top 에 위치함.
- 만약에 낮은 값이 top 위치에 오게 만들고 싶다면!
priority_queue<int, vector, greater> pq;
이런식으로 작성해야 함.
: 매개변수 하나만을 사용한다. 이때 출력하면 내림차순으로 나온다.
-> 우선순위 큐는 begin과 end 이터레이터를 지원하지 않으므로 Ranged for문 사용불가능하다.
즉 우선순위큐는 size로 접근하면 안된다.
우선순위큐의 empty하는 함수를 통해 접근하자!
-> 기본 형식으로는 불가능하다.
따라서 우선순위 큐 선언자체를 이런 방식으로 사용하도록 하자.
priority_queue<int, vector, greater>pq;
https://kibbomi.tistory.com/149
: sort할때 greater로 하면 내림차순이 나오지만, 우선순위큐는 greater는
오름차순이다.
어떻게 이해하냐면 컨테이너를 sort할때는 맨앞에 있는 친구가 비교구문에 따라야 한다.
우선순위큐는 비교함수를 그대로 따른다고 생각하자.
-> 뒤에다가 이터레이터 방식을 이용하면 선언과 동시에 초기화가 가능하다.
뒤쪽이 더 크므로 오름차순이다.
기존 sort로 정렬할때는 비교함수를 포인터 값을 3번째 인자값에 넣어주었다.
but, 우선순위큐는 구조체 또는 클래스를 작성해서,
비교 연산자를 이용해야 한다.
우선순위큐는 top()을 기준으로 해서 정렬이 이루어진다.
top()이 매개변수 첫번째 값이라고 생각하자.
sort()와 비교하면 출력되는 값이 반대로 나와서 의아해 할 수 있다.
-> greater일때 가장 작은요소가 top()으로 들어온다.