PS/Study Note
[자료구조] 우선순위 큐, 비교 연산자 (C++)
도비(Doby)
2021. 11. 30. 13:18
https://draw-code-boy.tistory.com/47
[자료구조] 우선순위 큐 (Priority Queue) 개념, C++ STL
우선순위 큐란 큐의 한 종류로 말 그대로 우선순위대로 큐에 데이터를 집어넣는다. (여기서 말하는 우선순위란 값의 크기의 오름차순 혹은 내림차순 등 사용자가 정할 수 있다.) 일반적인 큐는
draw-code-boy.tistory.com
저번에 우선순위 큐를 다룬 적이 있다. 이번 다익스트라를 공부하면서 우선순위 큐로도 구현할 수 있는 것을 공부했는데 이번 기회에 저번에 남았던 궁금증을 해결해보려 한다.
왜 비교 연산자가 반대로 작용할까?
답은 쉽게 구할 수 있었다. (https://hydroponicglass.tistory.com/169)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct cmp {
bool operator()(int a, int b) {
return a > b;
}
};
int main() {
priority_queue<int, vector<int>, cmp> pq;
pq.push(7);
pq.push(3);
pq.push(1);
while (!pq.empty()) {
cout << pq.top() << '\n';
pq.pop();
}
return 0;
}
cmp라는 비교 연산자를 struct를 통해 구현했다.
이때의 operator의 역할이 궁금증을 해결한다. 언뜻 보면 제일 큰 값으로 와있어야 한다.
하지만, operator(비교 연산자)의 의미는 조건에 따라 swap을 하는 것이다.
위에 코드 블록에서의 의미는 a > b가 true이면 true를 리턴해서 swap을 진행한다.
즉, a < b로 만들겠다는 의미다.