用C++实现一个通用的sort函数
问题
用C++实现一个尽可能通用的sort函数
分析
一个通用的sort函数应该包含以下要点:
- 确实可以排序(LOL)
- 可以应对C-style array和C++-style container的排序需求
- 可以应用于任意random access container
- 可以使用用户自定义的排序函数 / 仿函数 / lambda函数
实现
为了与std中的通用函数做区别,这里的命名规则,包括类型与函数,都在前面加了"my"以示区别。可能与标准的命名法有出入,所以仅做示例用。
思路
拷贝代码是愚蠢的行为。
或者说,
对于同一钟实现,尽量使用同一份代码。
感谢C++ Templates,对于不同类型与需求的函数,我们可以将生成多份代码的劳动放心的交给编译器。并且,Templates的代码生成是在编译期完成的,即不会造成额外的代码膨胀(如果你姿势正确的话),也一般不会造成额外的运行时开销。
函数原型
我们模仿std::sort来进行开发。
template< class It, class Compare >
void sort …