#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
#include <string>
using namespace std;
#define N_K 100
struct Data_s{
int number;
char name[20];
bool operator < (const Data_s &obj) const { return number < obj.number; }
bool operator > (const Data_s &obj) const { return number > obj.number; }
bool operator == (const Data_s &obj) const { return number == obj.number; }
bool operator != (const Data_s &obj) const { return number != obj.number; }
};
typedef struct Data_s Data_t;
void makeData(Data_t *d)
{
int i;
for (i=0;i<N_K;i++)
{
d[i].number = i;
sprintf(d[i].name,"name %02d",i);
}
}
bool greaterNumber(const Data_t& d1,const Data_t& d2)
{
return d1.number>d2.number;
}
template<typename T>
struct display{
void operator()(const T &x)const
{
cout<<x.number<<" "<<x.name<<endl;
}
};
int main()
{
Data_t d[N_K];
vector<Data_t> dv;
vector<Data_t>::iterator it;
makeData(d);
d[88].number = 0;
strcpy(d[88].name,"aaaa");
for (int i=0;i<N_K;i++)
{
dv.push_back(d[i]);
}
sort(dv.begin(),dv.end()); //升序 使用重载运算符 <
sort(dv.begin(),dv.end(),greaterNumber); //降序 使用自定义函数 greaterNumber
it = unique(dv.begin(),dv.end());
for_each(dv.begin(),dv.end(),display<Data_t>());
return 0;
}