C2064 항은 2개의 인수를 받아들이는 함수로 계산되지 않습니다.

평소에는 min 혹은 max를 비교할 때 ans_min과 ans를 두고 둘을 비교하며 변경하는 식으로 계산하는걸 선호하는데

https://www.acmicpc.net/problem/1459

 

1459번: 걷기

세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (

www.acmicpc.net

자료형이 long이구,,, ans_min을 무슨 값을 디폴트 값으로 둬야하는지 감이 안잡혀서

ans_1

ans_2

ans_3 이런 식으로 값들을 구한 후 이 중에서 가장 작은 값을 구하기 위해

min(ans_1, ans_2, ans_3)을 사용했는데

'항은 2개의 인수를 받아들이는 함수로 계산되지 않습니다.' 라는 오류가 발생했다. 몬말이지...

 

template <class _Ty, class _Pr>
_NODISCARD constexpr const _Ty&(min)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred) noexcept(
    noexcept(_Pred(_Right, _Left))) /* strengthened */ {
    // return smaller of _Left and _Right
    return _Pred(_Right, _Left) ? _Right : _Left;

오류를 클릭해서 min 탬플릿에 들어가보니...

_Right, _Left로 2개의 항만 비교를 한다는걸 알 수 있었다.

파이썬에서 넘어온 나에게 이것은 너무 가혹해,,,구냥 젤 작은거 출력해달라,,,

cout << min(ans_1, min(ans_2, ans_3));

일단 꼼수로 이런식으로 해결했다!

반응형

+ Recent posts