// Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <string>
#include <stdio.h>
#include <time.h>
#include <functional>
#include <algorithm>
#include <iostream>

using std::vector;
using std::string;

// 定义一个Person类 ,包括姓、名,性别,年龄(为演示方便都有公有变量)
class Person
{
public:
    string    sFirstName;
    string    sLastName;
    int        bSex;
    int        iAge;        
};

typedef vector<Person> VECTOR_PERSON;

string sNames[]={"李蕾蕾","李金羽","韩鹏","郑智","周海滨","崔鹏","陶伟","徐云龙","杨智","大连实德","季铭义","张耀坤","邹捷"};

// Creation of a user-defined function object
// that inherits from the unary_function base class
// std::for_each 要用到的函数
class printinfo: std::unary_function<Person, void>
{
public:
    result_type operator()(argument_type i)
    {
        std::cout << "姓名:" << i.sLastName << i.sFirstName << " " << "年龄:" << i.iAge << std::endl;

}
};

//std::stable_sort 要用到的比较大小的函数
//这里是按年龄比较!
bool CompareAge(Person p1,Person p2)
{
    return p1.iAge<p2.iAge;
};

bool CompareLastName(Person p1,Person p2)
{
    return p1.sLastName<p2.sLastName;
};

int main(int argc,char *argv[])
{
    VECTOR_PERSON vp;
    int i=0;

srand( (unsigned)time( NULL ) );
    int RANGE_MIN = 18;
    int RANGE_MAX = 50;

for(i=0;i<10;i++)
    {
        int rand100 = (int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN);

Person p;
        p.sFirstName = sNames[i].substr(2);
        p.sLastName  = sNames[i].substr(0,2);
        p.bSex = 0;
        p.iAge = rand100;

vp.push_back(p);
    }

std::cout << "随机排列:" << std::endl;
    std::for_each(vp.begin(),vp.end(),printinfo());            //循环打印出VECTOR_PERSON的所有元素!

std::stable_sort(vp.begin(),vp.end(),CompareAge);        // 对 VECTOR_PERSON 中的元素按年龄排序!

std::cout << " 按年龄排列:" << std::endl;

std::for_each(vp.begin(),vp.end(),printinfo());            //循环打印出结果

std::stable_sort(vp.begin(),vp.end(),CompareLastName);    // 对 VECTOR_PERSON 中的元素按姓氏排序!

std::cout << " 按姓氏排列:" << std::endl;

std::for_each(vp.begin(),vp.end(),printinfo());            //循环打印出结果

return 0;

}

转载于:https://www.cnblogs.com/huiliu/archive/2010/12/27/1918045.html

stable_sort应用例子相关推荐

  1. 起始字节 和起始位_frechlet起始距离fid的简短介绍

    起始字节 和起始位 Generative Adversarial Networks(GANs) are very difficult to evaluate as compared to other ...

  2. ACM练习 小Z来讲排名规则(WA)【C++ stable_sort稳定排序】

    描述 本次比赛严格按照ACM的排名规则进行,但可能很多小伙伴并不太了解这个排名方法,今天小Z来给大家简单说明一下.每个人的排名根据他解出的题目数量.做题时间还有错误提交次数决定,呃...在某些特殊情况 ...

  3. 理解你的排序操作(stable_sort,sort,partial_sort,nth_element,stable_partition,partition)

    排序一直是数据结构中的常用算法,STL提供的排序算法非常丰富,如何有效使用就值得探讨.在网上没有找到条款31的翻译,于是我自己翻译了.--Winter 如何进行排序?让我数数有几种方法. 一旦程序员需 ...

  4. stable_sort的用法与排序算法

    一.sort和stable_sort的区别: c++中的stable_sort排序函数与sort功能差不多,排序所使用的思路不一样. 1.sort(a,a+N) ,其中a是数组,a+N表示对a[0]至 ...

  5. 高斯回归过程应用例子

    假设现在已经观察到了6个样本点,x为样本点特征(一维的),y为样本输出值. 现在新来了一个样本点,要求是用高斯回归过程来预测新来样本点的输出值.这些样本点显示如下; 其中前面6个点是已知输出值的训练样 ...

  6. 语义网所谓的“本体”的具体例子是什么?人工智能

    作者:王喆 链接:https://www.zhihu.com/question/19558514/answer/26323766 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  7. pytorch记录:seq2seq例子看看这torch怎么玩的

    https://blog.csdn.net/nockinonheavensdoor/article/details/82320580 先看看简单例子: import torch import torc ...

  8. 适用于CUDA GPU的Numba例子

    • 适用于CUDA GPU的Numba例子 矩阵乘法 这是使用CUDA内核的矩阵乘法的简单实现: @cuda.jit def matmul(A, B, C): """Pe ...

  9. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

最新文章

  1. CDOJ 1073 线段树 单点更新+区间查询 水题
  2. Scala中Manifest、ClassTag、TypeTag的学习
  3. 解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言
  4. 女程序员被阿里录取工资二万六,辞职时被领导挽留:给你四万留下
  5. thinkingback no5
  6. Effective Java之考虑用序列化代理代理序列化实例(七十八)
  7. 计算机word基本知识选择题,2017计算机基础考试选择题「附答案」
  8. LeetCode(81): 搜索旋转排序数组 II
  9. 火遍全网的Hutool,如何使用Builder模式构建线程池
  10. 拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?
  11. mysql数据迁移到teradata_TERADATA数据库中SELECT的使用
  12. Binder IPC的权限控制
  13. jquery获取json对象中的key小技巧
  14. php http请求 微信,微信小程序封装http请求类的代码实例
  15. 【Nokia5800xm软件资源】
  16. JavaWeb——什么是Session及Session的用法
  17. AutoCAD二次开发1-环境配置
  18. html中常见标签及其用法归纳大全
  19. Nginx反向代理域名映射
  20. Airtest  入门

热门文章

  1. js根据时间戳获取日期失败,NaN-NaN-NaN NaN:NaN:NaN
  2. arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)
  3. 关于“知识共享”的几个基本概念
  4. 视频拍摄——视点和视角
  5. LoopBack 出现Handshake inactivity timeout问题
  6. Java面向对象程序设计综合练习2(编程题)
  7. SpringBoot项目端点配置
  8. 数部视频学习资源,一定有你想要的
  9. 干货教程:数据结构与算法之美
  10. 语音唤醒真香警告,轻松开启与Siri、小度和小爱的畅聊