function template
8518 ワード
1 #include<iostream>
2 using namespace std;
3
4
5 //function template
6 template<class T>
7 void sort(T* array,int len,bool(*compare)(T& a,T& b))
8 {
9
10 T temp;
11 for(int i=0;i<len;i++) //bubble sort
12 {
13 for(int j=len-1;j>i;j--)
14 {
15 if(compare(array[j],array[j-1]))
16 {
17 temp=array[j];
18 array[j]=array[j-1];
19 array[j-1]=temp;
20 }
21 }
22 }
23 }
24
25 template<class T>
26 bool ascend(T& a,T& b)
27 {
28 return a<b?true:false;
29 }
30
31 template<class T>
32 bool descend(T& a,T& b)
33 {
34 static int count=0; //caculate the number of the function
35 count++;
36 cout<<count<<"float"<<endl;
37 return a>b?true:false;
38 }
39
40 int main()
41 {
42 int arrayInt[10]={1,4,2,9,5,7,3,6,0,8};
43 float arrayFloat[10]={1.1,4.0,2.0,9.0,5.0,7.0,3.0,6.0,0.0,8.0};
44 sort<int>(arrayInt,10,ascend<int>);
45 for(int i=0;i<10;i++)
46 {
47 cout<<arrayInt[i]<<"";
48 }
49 cout<<endl;
50 sort<float>(arrayFloat,10,descend<float>);
51 for(int i=0;i<10;i++)
52 {
53 cout<<arrayFloat[i]<<" ";
54 }
55 cout<<endl;
56
57 return 0;
58 }