2 仿函数重载了()运算符,使得它可以像函数那样子调用(代码的形式好像是在调用函数)。
实例:
#include <iostream>
using namespace std;
class Compare
{
public:
bool operator()(int num1, int num2) const
{
if (num1 <= num2)
return true;
else
return false;
}
};
void sort(int *array, int size, const Compare &cmp)
{
if (array == NULL)
return;
for (int i=0; i<size-1; i++)
{
for (int j=0; j<=size-2-i; j++)
{
if (!(cmp(array[j], array[j+1])))
{
array[j] = array[j]^array[j+1];
array[j+1] = array[j+1]^array[j];
array[j] = array[j]^array[j+1];
}
}
}
}
void list(const int *array, int size)
{
if (array == NULL)
return;
for(int i=0; i< size; i++)
cout << array[i] << " ";
cout << endl;
}
int main()
{
int array[] = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
sort(array, sizeof(array)/sizeof(int), Compare());
list(array, sizeof(array)/sizeof(int));
return 0;
}
原文:http://blog.csdn.net/aspnet_lyc/article/details/30723563