언어/C++

이항 '<': 'const_Ty'이(가) 이 연산자를 정의하지 않거나 미리 정의된 연산자에 허용되는 형식으로의 변환을 정의하지 않습니다.

겜도리도리 2021. 12. 2. 23:41
반응형

이항 '<': '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