使用sort 和自定义比较函数对任意成员变量排序
2014-05-28 22:54
603 查看
我在学习C++ STL部分时,一直在思考如何使用最简单的方法实现对任意乱序的学生信息,分别按照姓名、年龄、成绩进行排序,在参考了前人的经验和经过自己的整合,终于找到了十分方便的方法,在这里与大家分享和讨论。
对于STL 中的list、vector、map等均有sort函数大家并不陌生,很容易实现对单个成员变量的排序,但是如何实现对特定的成员变量按照特定的顺序排序呢?
我的样本信息为:
stu1("wang",20,3.54);
stu2("zhang",27,3.24);
stu3("zuo",33,3.76);
stu4("li",24,3.98);
输出结果要求分别按照姓名、年龄、成绩进行升序排序。
VS 2010 调试成功代码如下:
对于STL 中的list、vector、map等均有sort函数大家并不陌生,很容易实现对单个成员变量的排序,但是如何实现对特定的成员变量按照特定的顺序排序呢?
我的样本信息为:
stu1("wang",20,3.54);
stu2("zhang",27,3.24);
stu3("zuo",33,3.76);
stu4("li",24,3.98);
输出结果要求分别按照姓名、年龄、成绩进行升序排序。
VS 2010 调试成功代码如下:
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; class student { public: string name; int age; float result; <span style="white-space:pre"> </span>//此处代码是参考前人的,不是很理解,希望大家指点! student(string na,int ag,float res):name(na),age(ag),result(res){} bool operator < (const student &st)const { return name < st.name; } }; bool less_age(const student& st1, const student & st2) { return st1.age < st2.age; } bool less_result(const student& st1, const student & st2) { return st1.result< st2.result; } int main() { student stu1("wang",20,3.54); student stu2("zhang",27,3.24); student stu3("zuo",33,3.76); student stu4("li",24,3.98); vector <student> stu; stu.push_back(stu1); stu.push_back(stu2); stu.push_back(stu3); stu.push_back(stu4); cout<<">before sort"<<endl; for (int i=0;i<stu.size();i++) cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].result<<endl; cout<<"after sort name"<<endl; sort(stu.begin(),stu.end()); for (int i=0;i<stu.size();i++) cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].result<<endl; cout<<"after sort age"<<endl; sort(stu.begin(),stu.end(),less_age); for (int i=0;i<stu.size();i++) cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].result<<endl; cout<<"after sort result"<<endl; sort(stu.begin(),stu.end(),less_result); for (int i=0;i<stu.size();i++) cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].result<<endl; while(1);
}输出结果如下:
相关文章推荐
- php usort 使用用户自定义的比较函数对二维数组中的值进行排序
- PHP 使用用户自定义的比较函数对数组元素排序
- 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
- PHP 使用用户自定义的比较函数对数组中的值进行排序
- 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
- usort — 使用用户自定义的比较函数对数组中的值进行排序
- 使用C++标准库sort自定义比较函数导致死循环问题
- 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
- C++使用模版实现按成员变量或者成员函数排序
- 关于std::sort中的比较函数使用时的严格弱排序(strict weak order)
- usort( )函数—使用用户自定义的比较函数对数组中的值进行排序
- 使用C++标准库sort自定义比较函数导致死循环问题
- PHP usort 使用用户自定义的比较函数对数组中的值进行排序
- <STL初探>list节点为自定义类型,如何访问节点中变量和函数,如何使用list自带的排序
- std::sort使用自定义比较函数
- (使用STL自带的排序函数7.3.4)POJ 2371 Questions and answers(sort()函数的使用)
- STL中sort、priority_queue、map、set的自定义比较函数
- javascript 数组排序函数sort和reverse使用介绍
- Collections.sort自定义排序的使用方法
- 使用STL中的stable_sort()函数进行排序