#include <iostream>
#include<string>
#include<vector>
using namespace std;
template <typename Object, typename Comparator>
const Object& findMax(const vector<Object >& arr, Comparator cmp)
{
int maxIndex = 0;
for (int i = 1; i < arr.size(); i++)
if (cmp.isLessThan(arr[maxIndex], arr[i]))
maxIndex = i;
return arr[maxIndex];
}
class CaseInsensitiveCompare
{
public:
bool isLessThan(const string& lhs, const string& rhs) const
{
return _stricmp(lhs.c_str(), rhs.c_str()) < 0;
}
};
int main()
{
vector<string> arr(3);
arr[0] = "ZEBRA";
arr[1] = "alligator";
arr[2] = "crocodile";
cout << findMax(arr, CaseInsensitiveCompare()) << endl; //这里!
return 0;
}
编译是可以通过的,但是main中findMax(arr, CaseInsensitiveCompare())是如何调用的还是没想明白,也没有搜到类似的用法,求指点啊