C++进阶实例2--员工分组
C++进阶实例2--员工分组
1 #include<iostream>
2 #include<map>
3 #include<vector>
4 #include<ctime>
5 using namespace std;
6
7 #define CEHUA 0
8 #define MEISHU 1
9 #define YANFA 2
10
11 // 员工分组
12 //
13 // 案例描述:
14 // 1. 10名员工(ABCDEFGHIJ)
15 // 2. 员工信息:姓名,薪资组成;部门:策划、没熟、研发
16 // 3. 随机给10名员工分配部门和薪资
17 // 4. 通过multimap进行信息的插入,key(部门编号),value(员工)
18 // 5. 分部门显示员工信息
19 //
20 // 解决思路:
21 // 1. 创建10名员工,存入vector
22 // 2. 遍历vector容器,取出每个员工,进行随机分组
23 // 3. 分组后,将员工编号作为key,具体员工为value,存放到multimap容器中
24 // 4. 分部门显示员工信息
25 //
26
27 // 创建员工
28 class Worker
29 {
30 public:
31 string m_Name;
32 int m_Salary;
33 };
34
35 void createWorker(vector<Worker>& v) {
36
37 string nameSeed = "ABCDEFGHIJ";
38 for (int i = 0; i < 10; i++) {
39 Worker worker;
40 worker.m_Name = "员工";
41 worker.m_Name += nameSeed[i];
42
43 worker.m_Salary = rand() % 10000 + 10000; // 10000 ~ 19999;
44
45 v.push_back(worker);
46 }
47
48 }
49
50 // 员工分组
51 void setGroup(vector<Worker>& v, multimap<int, Worker>& m) {
52 for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++) {
53 // 产生随机部门编号
54 int depId = rand() % 3; // 0, 1, 2
55
56 // 将员工插入到分组中
57 // key表示部门编号,value表示具体员工
58 m.insert(make_pair(depId, *it));
59 }
60 }
61
62 // 分组显式
63 void showWorkerByGroup(multimap<int, Worker>&m) {
64
65 cout << "策划部们:" << endl;
66 multimap<int, Worker>::iterator pos = m.find(CEHUA);
67 int count = m.count(CEHUA); // 统计具体人数
68 int index = 0;
69 for (; pos != m.end() && index < count; pos++, index++) {
70 cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
71 }
72
73 cout << "-----------------------" << endl;
74 cout << "美术部门:" << endl;
75 pos = m.find(MEISHU);
76 count = m.count(MEISHU); // 统计具体人数
77 index = 0;
78 for (; pos != m.end() && index < count; pos++, index++) {
79 cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
80 }
81
82 cout << "-----------------------" << endl;
83 cout << "研发部门:" << endl;
84 pos = m.find(YANFA);
85 count = m.count(YANFA); // 统计具体人数
86 index = 0;
87 for (; pos != m.end() && index < count; pos++, index++) {
88 cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
89 }
90 }
91
92 void test01() {
93
94 // 随机数
95 srand((unsigned int)time(NULL));
96
97 // 1.创建员工
98 vector<Worker>vWorker;
99 createWorker(vWorker);
100
101 // 测试员工信息
102 //for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++) {
103 // cout << "姓名:" << it->m_Name << " 工资:" << it->m_Salary << endl;
104 //}
105
106 // 2.员工分组
107 multimap<int, Worker>mWorker;
108 setGroup(vWorker, mWorker);
109
110 // 3.分组显式员工
111 showWorkerByGroup(mWorker);
112 }
113
114 int main() {
115
116 test01();
117
118 system("pause");
119
120 return 0;
121 }
C++进阶实例2--员工分组的更多相关文章
- 《Genesis-3D开源游戏引擎-官方录制系列视频教程:进阶实例篇》
注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D进阶实例 第四课<2D编辑与脚本的统一入口> 使用G3D完成一个简单的类飞机大战游戏,介绍了G3D2d游戏制作的流程包括: ...
- [代码]multimap员工分组案例
案例要求: //multimap 案例//公司今天招聘了 5 个员工,5 名员工进入公司之后,需要指派员工在那个部门工作//人员信息有: 姓名 年龄 电话 工资等组成//通过 Multimap 进行信 ...
- C++ STL 之 multimap案例之员工分组
#include <iostream> #include <vector> #include <map> #include <string> #incl ...
- MySQL进阶5--分组函数 / 分组排序和分组查询 group by(having) /order by
MySQL进阶--分组排序和分组查询 group by(having) /order by /* 介绍分组函数 功能:用做统计使用,又称为聚合函数或组函数 1.分类: sum, avg 求和 /平均数 ...
- 01_dubbo实例_服务分组
[为什么要服务分组?] 当一个接口有多种实现时,可以用group区分. [ Provider 的配置信息] <?xml version="1.0" encoding=&quo ...
- mysql group by 与order by的实例分析(mysql分组统计后最大值)
CREATE TABLE `test` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET latin1 DEFAULT NULL, `c ...
- vue进阶 --- 实例演示
这篇博客将通过一个实例来对vue构建项目的过程有一个了解. 主要用到的知识点如下所示: vue-router 2.0路由配置 router-view 和 router-link的使用 transiti ...
- 《SQL 进阶教程》 自连接分组排序:练习题1-2-2
分组排序 SELECT d1.district, d1. NAME, (SELECT COUNT(d2.price) FROM district_products d2 WHERE d2.price ...
- Java JNI 编程进阶 实例+c++数据类型与jni数据类型转换
原文:http://www.iteye.com/topic/295776 JNI一直以来都很少去关注,但却是我心中的一个结,最近这几天刚好手头有点时间,因此抽空看了一下这方面的东西,整理了一份文档,J ...
随机推荐
- 如果我不输入<!DOCTYPE HTML>,HTML 5能工作吗?
No,浏览器将无法识别HTML文件,并且HTML 5标签将无法正常工作.
- Java入门之基础程序设计
1.Java语言特点了解 1. java语言: 有些语言提供了可移植性.垃圾收集等机制,但是没有提供一个大型的库.如果想要有酷炫的绘图功能.网络连接功能或者数据库存取功能,就必须动手编写代码.Ja ...
- eclipse开发工具之"导入项目"
1.选择菜单栏"file""下的"import" 2.选择Maven 在选中"Existing Maven Projects",然 ...
- 关于elementUI如何在表格循环列表里分别新增Tag的设计使用
话不多说,直接上代码.想要实现的目的是这样的,想要在表格里单独添加每一个tag 那么,需要解决的问题就是如何定义这每一个插槽里的输入框,把每个输入框以及里面插入的数据区分开. 研究了很久,最后选择了对 ...
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
/etc/init.d/mysql startmysql 没有启动参考 https://blog.csdn.net/sirobot/
- [C/C++基础知识] main函数的参数argc和argv
该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void ...
- 纯干货数学推导_傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式
- fetch,终于认识你
fetch和XMLHttpRequest 如果看网上的fetch教程,会首先对比XMLHttpRequest和fetch的优劣,然后引出一堆看了很快会忘记的内容(本人记性不好).因此,我写一篇关于fe ...
- 【每日日报】第十八天 ----java最全排序方法
1 今天看了Java的第三章 2 冒泡法排序: package Line; import java.util.Arrays; public class MaoPao { public static v ...
- 将PHPMailer整合到ThinkPHP 3.2 中实现SMTP发送邮件
本内容转载出处:http://my.oschina.net/BearCatYN/blog/299192 并对以下内容做了一处说明. ThinkPHP没有邮件发送的功能,于是,我就想了想,就将PHPMa ...