【STL】-function object

 1 // Generic findMax, with a function object, version #1
 2 // Precondition,  a.size() > 0
 3 #include <iostream>
 4 #include <vector>
 5 #include <string.h>
 6 using namespace std;
 7 
 8 template <class Object, class Comparator>
 9 const Object& findMax(const vector<Object> &arr, Comparator cmp)
10 {
11     int maxIndex = 0;
12     for(int i = 1; i < arr.size(); i++) {
13         if(cmp.isLessThan(arr[maxIndex], arr[i]))
14             maxIndex = i;
15     }
16     return arr[maxIndex];
17 }
18 
19 #include <functional>
20 template <class Object>
21 const Object& findMax(const vector<Object> &arr)
22 {
23     return findMax(arr, less<Object>() );
24 }
25 
26 class CaseInsensitiveCompare {
27     public:
28             bool isLessThan(const string &lhs, const string &rhs) const
29                 {return (stricmp(lhs.c_str(), rhs.c_str())< 0); }
30 };
31 
32 int main() 
33 {
34     vector<string> arr(3);
35     arr[0] = "ZEBRA"; arr[1] = "alligator"; arr[2] = "crocodile";
36     cout << findMax(arr, CaseInsensitiveCompare()) << endl;
37     //cout << findMax(arr) << endl;
38     return 0;
39 }
40 
41     
42             
43     
44     

posted on 2014-07-19 18:20  醉清风JM  阅读(253)  评论(0编辑  收藏  举报

导航