64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <vector>
#include <functional>
#include <string>
using namespace std;
class A
{
public:
string name;
void print(ostream& out) const
{
out << name << endl;
}
bool operator < (const A &a) const //
{
return name<a.name;
}
};
ostream& operator<<(ostream& out, const A& a)
{
a.print(out);
return out;
}
template <typename T,typename T1>
const T& findMax(const vector<T> & a, T1 b)//
{
int maxIndex = 0;
for(int i = 1; i != a.size(); ++i)
{
if(b(a[maxIndex], a[i]))
{
maxIndex = i;
}
}
return a[maxIndex];
}
template <typename T>
const T& findMax(const vector<T> & a)//
{
int maxIndex = 0;
less<T> b;
for(int i = 1; i != a.size(); ++i)
{
if(b(a[maxIndex], a[i]))
{
maxIndex = i;
}
}
return a[maxIndex];
}
class B
{
public:
bool operator()(const A& a, const A& b) const
{
return a.name<b.name ;
}
};
int main()
{
vector<A> a(3);
a[0].name = "A";
a[1].name = "a";
a[2].name = "c";
cout << findMax(a) << endl;
cout << findMax(a,B()) << endl;
return 0;
}