'sort'에 해당되는 글 1건

  1. 2012.10.11 Invalid parameter<

Invalid parameter<

algorithm의 sort 를 사용할 때 Invalid Parameter< Assert가 발생 할 경우가 있다.

VS2005 이상에서만 발생하고 컨테이너 list 나 vector 나 상관 없이 발생한다.

MS에서는 strict-weak-ordering 이라는 개념이 적용되어 그렇다고 한다.

문제는 predicate function에서 같을 경우 TRUE를 리턴 하면 발생한다.

이전엔 전혀 문제 없이 사용하던 코드이고, 논리적으로도 문제가 없어 보이기 때문에 의심받지 않는

코드에서 발생하는게 함정이긴하다.

ex)

struct SortList

{

static BOOL Compare(int a, int b)

{

return a <= b ? TRUE : FALSE;

}

}

위 코드는 전혀 문제 없어 보인다. 하지만 위의 Assert가 발생한다. 간단히 에러만 피한다면

TRUE : FALSE; 를 FALSE : TRUE; 로 고치면 된다.  

핵심은 비교하는 두 파라미터가 같을 경우 FALSE를 리턴 해야 한다는 것.

asc, desc 는 논리에 따라 구현 하면 된다.

 

http://support.microsoft.com/kb/949171

prev 1 next