仿函数一般不会单独使用,主要是为了搭配STL算法使用
函数指针不能满足STL对抽象性的要求,不能满足软件积木的要求,无法和STL其他组件搭配
本质就是类重载了一个operate(),创建一个行为类似函数的对象
#include <algorithm>#include <iostream>using namespace std;//模板编程template <class T>inline bool MySortT(T const &a, T const &b){return a>b;}template <class T>inline void DisplayT(T const &a){cout << a << " ";}//仿函数struct SortF{bool operator()(int a, int b){return a > b;}};struct DisplayF{void operator()(int a){cout << a << " ";}};//c++仿函数模板template <class T>struct SortTF{inline bool operator()(T const &a, T const &b) const {return a > b;}};template <class T>struct DisplayTF{inline void operator()(T const &a) const {cout << a << " ";}};int main(){int arr[] = {4,3,4,1,5};//泛型sort(arr, arr + 5, MySortT<int>);for_each(arr, arr+5, DisplayT<int>);cout << endl;//仿函数sort(arr, arr + 5, SortF());for_each(arr, arr+5, DisplayF());cout << endl;//仿函数模板sort(arr, arr + 5, SortTF<int>());for_each(arr, arr+5, DisplayTF<int>());cout << endl;return 0;}
