compare 함수는 operator<
조건(strict total order)을 만족해야 합니다. 즉
- (irreflexive) 임의의
a
에 대해operator<(a, a)
는false
여야 합니다. - (transitive) 임의의
a
,b
,c
에 대해operator<(a, b) && operator<(b, c)
이면,operator<(a, c)
는true
여야 합니다. - (connected) 임의의
a
,b
에 대해operator<(a, b) && operator<(b, a)
여서는 안 됩니다. (!operator<(a, b) && !operator<(b, a)
이면a
와b
는 같은 것으로 간주됩니다.)
compare 함수를 operator<=
조건을 만족하도록 짜셨고, 이 경우 첫 번째와 세 번째 조건을 만족하지 않았기 때문에 어떤 일이 일어나도 이상하지 않습니다.
jiwoo2211 2년 전
입력받은 벡터 v1을 sort하려고 하는데 중복된 숫자를 받기 때문에 코드에 쓰여진 대로 compare 함수를 작성했는데 segFault가 떴습니다. 그래서 compare함수를 sort에 주지 않고 제출했는데 맞았더군요... compare함수에 잘못된 점이 있을까요?