具体使用
cpp
bool myfunction(int i, int j) { return (i < j); }
class my_function
{
public:
bool operator()(int i, int j) { return (i < j); }
};
int main()
{
int array[] = { 4,1,8,5,3,7,0,9,2,6 };
// 默认按照小于比较,排出来结果是升序
std::sort(array, array + sizeof(array) / sizeof(array[0]));
for (int i = 0; i < 10; i++)
{
cout << array[i];
}
cout << endl;
//函数调用//myfunction表示函数的地址
std::sort(array, array + sizeof(array) / sizeof(array[0]), myfunction);
for (int i = 0; i < 10; i++)
{
cout << array[i];
}
cout << endl;
//仿函数调用
std::sort(array, array + sizeof(array) / sizeof(array[0]), my_function());
for (int i = 0; i < 10; i++)
{
cout << array[i];
}
cout << endl;
// 如果需要降序,需要改变元素的比较规则
std::sort(array, array + sizeof(array) / sizeof(array[0]), greater<int>());
for (int i = 0; i < 10; i++)
{
cout << array[i];
}
cout << endl;
return 0;
}
myfunction表示函数地址,改模板比较函数为指针,直接传地址就能调用该函数
my_function()为仿函数的调用