예상하신 대로 runtime error 가 발생한 이유는 sort 함수를 호출할 때 올바르지 않은 cmp 를 매개변수로 넘겨주었기 때문입니다.
cmp 함수는 수학적으로 strict weak ordering 조건을 만족해야 합니다.
* cmp(a, a) == false
* 만약 cmp(a, b) == true 이면 cmp(b, a) == false
* 만약 cmp(a, b) == true 이고, 동시에 cmp(b, c) == true 이면 cmp(a, c) == true
여기에 추가로 equivalence relationship 에 대한 조건을 만족해야 합니다.
더 자세히 알고 싶으시면 C++ Compare function object(링크) 를 참조하세요
실제로 작성하신 함수는 cmp("hh", "i") == true 이면서 cmp("i", "hh") == true 이기 때문에 두 번째 조건을 어기고 있습니다.
여러개의 조건으로 정렬하고 싶을때는 다음 형식을 따르면 됩니다.
qhvlq456 4년 전
이제막 STL공부하고 있는데요..
런타임 에러가 뜨는데 이유가 먼지 모르겠어서 질문드립니다
sort에서 에러 나는거 같은데 sort마지막 매개변수에 대해서 자세히 설명해주시면 너무 감사드릴거같습니다
솔직히 a > b 가 그냥 내림차순, a < b 가 오름차순으로 알고있는데 왼쪽이 더 클수 있도록 이라는말이 도무지 이해가 가질 않네요
설명해주시면 감사하겠습니다 ㅠㅠ