#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std; class Student
{
private:
int id; // 学号
string name; // 姓名
float eyesight; // 视力
float height; // 身高
float chinese; // 语文成绩
float english; // 英文成绩
float math; // 数学成绩
public:
Student(int id, string name, float eyesight, float height, float chinese, float english, float math)
{
this->id = id;
this->name = name;
this->eyesight = eyesight;
this->height = height;
this->chinese = chinese;
this->english = english;
this->math = math;
} int get_id()
{
return id;
} string get_name()
{
return name;
} float get_eyesight()
{
return eyesight;
} float get_height()
{
return height;
} float get_chinese()
{
return chinese;
} float get_english()
{
return english;
} float get_math()
{
return math;
}
}; // 比较大小的函数(谓词)
bool comparer(Student& stu_a, Student& stu_b)
{
// 按eyesight升序 + height升序排列
if(stu_a.get_eyesight() != stu_b.get_eyesight())
return (stu_a.get_eyesight() < stu_b.get_eyesight());
else
return (stu_a.get_height() < stu_b.get_height()); // 按eyesight降序° + height降序排列
//if(stu_a.get_eyesight() != stu_b.get_eyesight())
// return (stu_a.get_eyesight() > stu_b.get_eyesight());
//else
// return (stu_a.get_height() > stu_b.get_height()); // 按eyesight升序 + height降序排列
//if(stu_a.get_eyesight() != stu_b.get_eyesight())
// return (stu_a.get_eyesight() < stu_b.get_eyesight());
//else
// return (stu_a.get_height() > stu_b.get_height()); // 按eyesight降序 + height升序排列
//if(stu_a.get_eyesight() != stu_b.get_eyesight())
// return (stu_a.get_eyesight() > stu_b.get_eyesight());
//else
// return (stu_a.get_height() < stu_b.get_height());
} int main(int argc, char** argv)
{
vector<Student> vec;
vec.push_back(Student(, "Dudley", 1.1f, 170.2f, 90.5f, 89.5f, 93.0));
vec.push_back(Student(, "Chris", 1.1f, 163.4f, 93.5f, 90.0f, 83.5f));
vec.push_back(Student(, "Bob", 1.5f, 166.6f, 86.0f, 98.5f, 85.0f));
vec.push_back(Student(, "Andrew", 1.5f, 173.2f, 98.5f, 100.0f, .f)); // 调用STL中的sort函数,其中的第三个参数就是我们前面定义的,比较两个Student对象大小的函数
sort(vec.begin(), vec.end(), comparer); vector<Student>::iterator iter;
for(iter = vec.begin(); iter != vec.end(); ++iter)
{
cout << (*iter).get_eyesight() << "\t" << (*iter).get_height() << endl;
} return ;
}

STL vector按多字段值排序的更多相关文章

  1. SQL 按特定字段值排序

    SQL 按特定字段值排序的代码,有需要的朋友可以参考下. id, name shandong01 name1 shandong02 name2 shandong03 name3 beijing01 n ...

  2. PHP二位数组按照数组的某个字段值排序

    不多废话 直接代码 /** * @name 排序 按照数组的某个字段值排序 * @param $array 排序数组 $field 排序字段 $direction 排序顺序 * @author wan ...

  3. STL map 按key值和按value值排序

    map是用来存放<key, value>键值对的数据结构,能够非常方便高速的依据key查到对应的value. 假如存储水果和其单位价格.我们用map来进行存储就是个不错的选择. 我们这样定 ...

  4. STL vector+sort排序和multiset/multimap排序比较

    由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...

  5. 160628、利用Oracle rownum让表排序字段值连续

    利用Oracle rownum让表排序字段值连续 1.需求说明 表(eval_index)中有字段如下: 表字段 描述 说明 ID 主键 GROUP_ID 分组编号 SORT_NUM 排序序号 按照分 ...

  6. Mysql中对字符串类型的字段进行数字值排序

    排序字段+0或者*1,类似  Java 把 其他类型转换成字符串 比如 +“”: 一.对普通数字字符串字段排序 -- 方式一 SELECT * FROM xxxxxx WHERE STATUS ' O ...

  7. C++ STL vector容器学习

    STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...

  8. STL vector

    STL vector vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问 ...

  9. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

随机推荐

  1. InstallShield 2010 使用 .net framework 4.5

    一.InstallShield 2010 使用 .net framework 4.5记录 1.prq的地址,通过以下地址,下载相应的prq文件 .NET 4.5: http://saturn.inst ...

  2. 深入理解Java:注解(Annotation)--注解处理器

    如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了.使用注解的过程中,很重要的一部分就是创建于使用注解处理器.Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处 ...

  3. jquery的$.extend、$.fn.extend、 jQuery.extend( target, object1, [objectN])作用及区别

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); 虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便. ...

  4. angularjs之自己定义指令篇

    1>指令基础知识 directive() 参考资料 http://www.tuicool.com/articles/aAveEj http://damoqiongqiu.iteye.com/bl ...

  5. centos 安装php7.0.2

    PHP7.0正式版已经在2015年11月份左右发布,目前是PHP7.0.2版本,本人最早是从2015年8月php7的第一个测试版跟起,现在正式版发布. linux版本:64位CentOS 6.6 Ng ...

  6. COCOS2D 释放资源的最佳时机

    有场景A跟场景B,场景A是当前场景,场景B是将要替换的新场景. 那么A场景的资源释放最佳时机是在什么时候呢? 这是释放资源的代码(注意要按这个顺序释放): 1 2 3 4 CCAnimationCac ...

  7. 2012多校3.A(用O(log(n))判断b^k % a == 0)

    Arcane Numbers 1 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  8. sql 2005,2008开启bcp的方法嗯哈步骤

    sqlserver 2008开启bcp服务的方法和步骤 sqlserver 2005开启bcp服务的方法和步骤 在开始菜单中找到sql server 2005 -->> 配置工具 --&g ...

  9. 第五天 loadmore

    mutating func loadFresh(completion: (result: APIResult<DeserializedType>) -> ()) -> Canc ...

  10. 使用Carthage安装第三方Swift库

    http://blog.crazyphper.com/?p=3661 carthage update