c++11版本list中sort用lambda表达式

转载 2015年07月09日 15:47:44

//定义学生类
class Student
{
public:
string StuName; //姓名
string StuNum; //学号
string Sex; //性别
//成绩
float English; //英语
float SQL; //SQL
float Prob; //概率论
float Circuit; //电路
float CSharp; //C#
float Average; //平均成绩
};

list studList;


c++ 11,可以用lambda表达式
//用平均成绩排序
list.sort( -> bool

return a.Average > b.Average; 
});
//用c#成绩排序
list.sort( -> bool

return a.Average > b.Average; 
});

如果是c++11以下版本
1. 函数
bool compare_avaerage (const Student& first, const Student& second)
{
return a.Average > b.Average;
}
然后调用list.sort(compare_average);
2. Function class
class StudentSorter{
public:
operator() (const Student& s1, const Student& s2)
{
// get the field to sort by and make the comparison
return a.Average > b.Average;
}
}
然后你可以调用
StudentSorter sorter;
sort(list.begin(), list.end(), sorter);




相关文章推荐

c++ map根据value排序以及lamda表达式的应用

vector topKFrequent(vector& nums, int k) { map m; vector> temp; vector res; for (auto n : nums) ...
  • HUSTLX
  • HUSTLX
  • 2016年05月03日 10:20
  • 788

C# 中使用Linq和Lambda表达式对List<T>进行排序

C#中List排序的两种方法 List stu = (ListStudent>)Session["StudentList"]; Linq表达式: //按学号降序 Lis...

C++11 sort, vector, lambda——vector 自定义排序

vector自定义sort( ):std::sort大法好!std::vector大法好!lambda大法好!

C++ STL中list的sort问题

排序算法有很多,效率都不错,有现成的就用

STL List::sort() 解析

看侯捷翻译那本《STL源码剖析》中list内置sort的算法,书中注释说是quick sort,看了半天没看明白, 然后就把代码敲出来运行看看,上面的源码如下: template ...

关于C++各类排序算法与std::sort性能的比较

talk is cheap.直接放代码(C++)。 先定义一个计时的类。 class Time_count//时间计时类,需要#include { private: clock_t ...

初窥c++11:lambda函数及其用法

为什么需要lambda函数 匿名函数是许多编程语言都支持的概念,有函数体,没有函数名。1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值。正因为有这样的需求,c++引入了lamb...
  • booirror
  • booirror
  • 2014年05月25日 19:13
  • 21903

LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

介绍     ·Select - Select选择;延迟     ·Where - Where查询;延迟     ·OrderBy - 按指定表达式对集合正序排序;延迟     ·OrderB...

C++11 lambda表达式在for_each和transform算法下的使用

以前,在lambda表达式没有进入标准的时候,对容器的遍历等涉及到使用函数指针的情况,一般人会懒得使用std::for_each,或std::transform,也许只是一个短短的几句话,却要单独写个...

每天进步一点点——C++11中使用lambda表达式实现一个简单的ScopeGuard

C++11编程中一个简单实用的ScopeGuard实现
  • cywosp
  • cywosp
  • 2014年06月09日 15:56
  • 3667
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++11版本list中sort用lambda表达式
举报原因:
原因补充:

(最多只允许输入30个字)