std::stable_sort 和 std::for_each 的用法!按结构中某一字段值大小排续!
来源:互联网 发布:node.js调用python 编辑:程序博客网 时间:2024/05/20 11:33
// 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;
}
//
#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;
}
输出结果
随机排列:
姓名:李蕾蕾 年龄:34
姓名:李金羽 年龄:33
姓名:韩鹏 年龄:27
姓名:郑智 年龄:65
姓名:周海滨 年龄:20
姓名:崔鹏 年龄:28
姓名:陶伟 年龄:21
姓名:徐云龙 年龄:29
姓名:杨智 年龄:23
姓名:大连实德 年龄:25
按年龄排列:
姓名:周海滨 年龄:20
姓名:陶伟 年龄:21
姓名:杨智 年龄:23
姓名:大连实德 年龄:25
姓名:韩鹏 年龄:27
姓名:崔鹏 年龄:28
姓名:徐云龙 年龄:29
姓名:李金羽 年龄:33
姓名:李蕾蕾 年龄:34
姓名:郑智 年龄:65
按姓氏排列:
姓名:崔鹏 年龄:28
姓名:大连实德 年龄:25
姓名:韩鹏 年龄:27
姓名:李金羽 年龄:33
姓名:李蕾蕾 年龄:34
姓名:陶伟 年龄:21
姓名:徐云龙 年龄:29
姓名:杨智 年龄:23
姓名:郑智 年龄:65
姓名:周海滨 年龄:20
请按任意键继续. . .
- std::stable_sort 和 std::for_each 的用法!按结构中某一字段值大小排续!
- std::stable_sort 和 std::for_each 的用法[转]
- C++ std::sort和 std::stable_sort
- C++中std::for_each的使用
- C++中std::sort/std::stable_sort/std::partial_sort的区别及使用
- std::for_each
- std::for_each
- C++11 中std::function和std::bind的用法
- C++11 中std::thread和std::mutex的用法
- C++11 中std::function和std::bind的用法
- std::for_each()的奇怪现象
- std::unique_ptr和std::shared_ptr的用法
- C++ std::for_each
- 代码片段----std::for_each
- std::set 和 std::map 的基本用法
- numpy中std()和pandas中std()的区别
- std::copy()和std::back_inserter()用法
- C++中std::reverse和std::reverse_copy的使用
- 天涯社区超布尔言论
- 让我们看看当当网是怎么骗钱的!!!
- 也谈接口编程
- 如何有效的使用C#读取文件 选择自 cuike519 的 Blog
- SQL2005亲身体验
- std::stable_sort 和 std::for_each 的用法!按结构中某一字段值大小排续!
- 什么是最强的搏击术!
- 为什么老婆还是别人的好?
- 简历制作诀窍谈
- C语言编写的简单的学生成绩管理系统
- 用例图
- Conection接口
- 人生中十件无能为力的事
- 深入浅出理解索引结构