今天做一个题目,用到sort()来排序。
原来的比较函数式这样的:
int cmp (stickClass s1 , stickClass s2){ if (s1.len != s2.len) return s1.len > s2.len; else return s1.weight >= s2.weight;/* >= */}
运行时报错了,错误定位在“algorithm.h”里面。基本上能确定是sort()出了问题。
我去问同学,同学给我发了一个网址:
这个页面的大致内容是,在VC2008以上的版本中,sort()只接受严格的比较函数。如果比较两个相等的值,必须返回false。
所以上面的比较函数写成:
int cmp (stickClass s1 , stickClass s2){ if (s1.len != s2.len) return s1.len > s2.len; else return s1.weight > s2.weight;/* > */}
就是对的了。