C++ 泛型
泛型 Xun C++标准算法库中的各种函数都有很强的适用性。比如其中的 std::sort 函数,它即可以对 std::vector 中的元素进行排序,也能对 std::deque 中的元素进行排序,对于数组中的元素,它也可以正常运行。同时, std::sort 函数还可以接受一个函数指针(谓词),用来指定排序规则。在这篇文章中,我们将模拟标准库中的 std::sort 函数,写一个与其接口相同的排序函数。 这里排序的方法为归并排序,其主要思想是将两个已排序的短序列合并为一个更长的已排序序列。一般来说,子序列也是无序的,这就需要在函数中对两个短序列进行归并排序。若序列只有一个元素,则它肯定是有序的,递归结束。其动图演示如下:(动图来自互联网) 下面参考一下 std::sort 函数的接口。 std::sort 函数无返回值(或返回 void ),接收两个迭代器指示序列的开始位置和尾后位置,同时还有一个可选参数,用来指定排序规则,其默认使用 < 来进行比较。 于是我们排序函数的接口可能长成这样: template<typename RandIter> void merge_sort ( RandIter iterBeg, RandIter iterEnd, //开始与尾后迭代器 TYPE comp = ...//排序规则 ) 这里的第一行代码说明下面的 RandIter 是一个类名