回调函数
回调函数是C语言中就有的一种函数。根据百度百科回调函数的定义:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
通过使用回调函数,可以把我们需要调用的函数和我们需要调用的函数需要调用的我们的函数分开,以达到程序解耦的目的。
如下是一个排序的使用回调函数的简单的例子:
#include <iostream>
using namespace std;
//交换函数
template <typename T>
inline void Swap(T& num1, T& num2) //交换
{
T tempnum = num1;
num1 = num2, num2 = tempnum;
}
//普通排序,默认升序
template <typename T>
void Sort(T* left, T* right)
{
if (left >= right) return;
T* i = left;
T* j = right;
T base = *left;
while (i < j)
{
while (i < j && base <= *j) j--;
while (i < j && base >= *i) i++;
if (i >= j) continue;
Swap(i, j);
}
*left = *i;
*i = base;
Sort(left, i - 1);
Sort(j + 1, right);
}
//三个参数自定义规则排序重载
template <typename T, typename Callback>
void Sort(T* left, T* right, Callback funptr)
{
if (left >= right) return;
T* i = left;
T* j = right;
T base = *left;
while (i < j)
{
while (i < j && funptr(base, *j)) j--;
while (