STL之sort
今天写一个题,T了好久,结果是STL的sort的问题,下面来简单说一下。
sort在STL中的定义
sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
_Compare __comp)
它是一种比较综合的排序,理论复杂度比一般手写的要好,但是使用时的复杂度有很大区别。
第一种
sort(array+1,array+n+1)
这种对一个数组直接按默认从小到大排序,当然是最快的一种用法。
第二种
sort(array+1,array+n+1,cmp)
这种用自定义的bool型比较函数的就会慢不止一倍
我做题就因为这个卡。第三种
sort(struct+1,struct+n+1)
这种比第二种要快比第一种要慢,它是对一个结构体按照结构体内重载的来比较的
第四种
sort(struct+1,struct+n+1,cmp())
这种是定义functor的排序,和第一种差不了多少,算是较好的结构体排序我用这个才A了那道题。struct cmp{bool operator()(struct a,struct b){return a.sb.s;}}