leehoogwan   2년 전

일단 stable_sort를 이용해서 맞긴 했는데,

처음에는 저렇게도 짰습니다. 

근데 저렇게 하면 comp함수 부분에서 invalid comparator오류가 발생합니다. 

이 오류는 ==이 true면 나머지는 false여야 한다? 이런 의미던데, 도통 이해가 안갑니다ㅜㅜ

이부분에 대해서 설명해주실 고수분 계신가요?..

bjh3502   2년 전

sort는 stable함을 보장하지 않기에, 단순히 sort에 정렬기준을 커스텀해서 넣어서 이 문제를 풀 수 없지만..

comp를 구현하실때, vec1.first==vec2.first일때 true를 반환하도록 구현할경우, strict weak ordering을 만족하지 않아서 문제가 됩니다.

https://www.secmem.org/blog/20..."compare 함수의 잘못된 사용"으로 검색하시어 읽어보시면 도움이 될 것 같습니다.

이러한 상황에서는 조건문으로 분기할 필요 없이, 간단히 bool cmp(...){ return v1.first<v2.first; }처럼 구현하셔도 됩니다. 등호가 없어야합니다.


댓글을 작성하려면 로그인해야 합니다.