반응형
이항 '<': 'const_Ty'이(가) 이 연산자를 정의하지 않거나 미리 정의된 연산자에 허용되는 형식으로의 변환을 정의하지 않습니다.
< 연산자를 쓴 적이 없는데... 이런 에러가 떠서 확인해보니 우선순위 큐 사용 때문이었다.
다익스트라 알고리즘을 사용하기 위해 우선순위 큐 PQ를 선언하고, node 타입의 정보를 넣어주었다.
<int>, <float>와 같이 원래 존재하는 변수형이었다면 자연스럽게 Max heap 구조로 정리하겠지만
struct를 통해 <node>와 같은 임의의 형식을 사용하였기 때문에, 우선순위 큐에서 heap 구조로 정리할 때 비교가 불가능하여 오류가 발생했다.
따라서 연산자를 정의해주어 heap 구조로 정리할 수 있게 해줘야 한다.
위 예시에서, PQ는 node타입이고, node의 rupee가 낮을수록 위로 오게 (Min heap 구조) 정리하게 된다.
오퍼레이터 구현부를 retrun rupee < i.rupee; 로 바꿔주고, 음수화하는 방식도 사용 가능하다.
반응형
'언어 > C++' 카테고리의 다른 글
[C++] 스마트 포인터 (0) | 2021.12.15 |
---|---|
[C++] string 클래스 정리 (0) | 2021.12.09 |
sstream을 사용하여 문자열 split 하기 (C++) (0) | 2021.11.21 |
[C++] 부동 소수점 (0) | 2021.11.12 |
[C++ STL] vector 선언 및 초기화 (1차원, 2차원) (0) | 2021.10.03 |