编写排序函数时想使用algorithm中的sort函数,当时传入了一个描述排序方法的函数,编译后执行时就出现问题了,执行时,直接就退出了,也没有报错,但就是无法执行。随后在网上查找资料并查看了sort函数的源码,最后发现sort函数原型中有个坑。
实际上sort函数显示调用了introsort(内省排序),然后采用了insertsort(插入排序)
在内省排序中,需要元素大于16个才执行,不然就直接调用插入排序了,而我测试时用的数据为34个,所以调用了内省排序。
而在内省排序中调用了一个函数__unguarded_partition这个函数就非常坑
template<typename _RandomAccessIterator, typename _Compare>
_RandomAccessIterator
__unguarded_partition(_RandomAccessIterator __first,
c
_RandomAccessIterator __last,
_RandomAccessIterator __pivot, _Compare __comp)