#include <iostream>
using namespace std;
template<class T> class greaterThan
{
public:
bool operator()(const T & x, const T & y) const
{ return x>y; }
};
int main()
{
greaterThan<int> morethan;
int a,b;
cout<<"please input two values to compare/n";
cin>>a>>b;
(morethan(a,b))?(cout << a << ">" << b << endl)
:(cout << a << "<" << b << endl);
cout<<"please input two values to compare/n";
cin>>a>>b;
(morethan.operator ()(a,b))?(cout << a << ">" << b << endl)
:(cout << a << "<" << b << endl);
return 0;
}
// 函数对象应用
#include <iostream>
#include <vector>
using namespace std;
template<class T> class GreaterThan
{
public:
bool operator()(const T & x, const T & y) const
{ return x>y; }
};
template<class T> class LessThan
{
public:
bool operator()(const T & x, const T & y) const
{ return x<y; }
};
template<class Type, class Compare> void insert_sort( vector<Type> & vec, Compare compare)
{
int i, j, n = vec.size();
Type temp;
for( i=1; i<n; i++)
{
j = i;
temp = vec[j];
while(j>0 && compare(temp,vec[j-1]) )
{
vec[j] = vec[j-1];
j--;
}
vec[j] = temp;
}
}
int main()
{
int arr_int[10] = {3,9,8,2,6,1,7,0,4,5};
vector<int> vec(arr_int, arr_int+10);
//GreaterThan gt;
//insert_sort(vec, gt );不能将参数2 从“GreaterThan”转换为“GreaterThan”
// 升序排列
insert_sort(vec, GreaterThan<int>() );
for( int i=0; i<vec.size();i++)
cout << vec[i];
cout << endl;
// 升序排列
LessThan<int> less;
insert_sort(vec, less);
for( int i=0; i<vec.size();i++)
cout << vec[i];
cout << endl;
return 0;
}