std::sort使用自定义比较函数

来源:互联网 发布:精通qt4编程 第2版 编辑:程序博客网 时间:2024/05/22 07:51
//std_sort.cpp#include<vector>#include<algorithm>#include<string>#include<functional>#include<iostream>using namespace std;struct Person{int age;string name;Person(const int a=0,const string &n="nobody"):age(a),name(n){}bool operator < (const Person &rhs) const { return this->age < rhs.age; }bool operator > (const Person &rhs) const { return this->age > rhs.age; }};bool Greater(const Person &a, const Person &b){return a.age > b.age;}struct LesserAge: public binary_function<Person,Person,bool>{inline bool operator()(const Person &a, const Person &b){return a.age < b.age;}};int main(){vector<Person> vecPerson;vecPerson.push_back(Person(24,"Calvin"));vecPerson.push_back(Person(32,"Benny"));vecPerson.push_back(Person(30,"Alice"));vecPerson.push_back(Person(28,"Alison"));std::sort(vecPerson.begin(),vecPerson.end());for(size_t i=0; i<vecPerson.size(); ++i) cout<<vecPerson[i].age<<", "<<vecPerson[i].name<<endl;cout << "========" << endl;std::sort(vecPerson.begin(),vecPerson.end(),std::greater<Person>());for(size_t i=0; i<vecPerson.size(); ++i) cout<<vecPerson[i].age<<", "<<vecPerson[i].name<<endl;cout << "========" << endl;std::sort(vecPerson.begin(),vecPerson.end(),LesserAge());for(size_t i=0; i<vecPerson.size(); ++i) cout<<vecPerson[i].age<<", "<<vecPerson[i].name<<endl;cout << "========" << endl;std::sort(vecPerson.begin(),vecPerson.end(),Greater);for(size_t i=0; i<vecPerson.size(); ++i) cout<<vecPerson[i].age<<", "<<vecPerson[i].name<<endl;cout << "========" << endl;return 0;}

0 0