stable_sort应用例子

// 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

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值