HM236 员工分部门
HM236 员工分部门
来源: 第 236 集 STL案例2-员工分组
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
公司招了 \(10\) 名员工,姓名用种子串 ABCDEFGHIJ 拼出:先写下前缀 员工,再追加第 \(i\) 个字母,得到 员工A 到 员工J。每名员工有姓名和工资。三个部门编号为:策划 \(0\)、美术 \(1\)、研发 \(2\)。
实现步骤必须按下面三步,容器参数按**引用**传入:
- 创建员工:把 \(10\) 人放进
vector。人物类(或结构体)用公开成员记录姓名和工资,可以先不写构造函数,创建后再赋值。 - 分组:遍历向量,按输入给定的部门编号,把“部门编号 + 该员工”插入
multimap。键是部门,实值是员工。同一部门会有多人,键会重复,所以必须用multimap而不是map。插入用make_pair。 - 分部门显示:对每个部门,先
find该键,得到该部门第一对的迭代器;再count该键,得到人数。循环条件是“迭代器还不是end,并且已经输出的人数小于count”,两者同时推进。不要从begin一路扫到end再自己过滤。员工信息在对组的second里。
部门宏可定义为策划 \(0\)、美术 \(1\)、研发 \(2\)。同一部门内的先后顺序就是插入 multimap 的顺序。
工资和部门由输入给出,不要用未固定种子的随机数。课堂上若自己生成工资,rand() % 10000 + 10000 的范围是 \([10000, 19999]\),到不了 \(20000\);部门则是 rand() % 3 得到 \(0,1,2\)。
输入格式
共 \(10\) 行。第 \(i\) 行两个整数:第 \(i\) 名员工(员工A 到 员工J)的工资和部门编号(\(0\)、\(1\) 或 \(2\))。
输出格式
按策划、美术、研发的顺序输出三个部门。每个部门先输出一行部门名(策划部门、美术部门、研发部门),再按该部门内的插入顺序,每人一行:姓名、一个空格、工资。部门与部门之间输出一行 ---。空部门只输出部门名,没有人员行。
样例
输入 #1
12000 0
13000 0
14000 1
15000 2
16000 1
17000 2
18000 0
19000 1
11000 2
10000 1
输出 #1
策划部门
员工A 12000
员工B 13000
员工G 18000
---
美术部门
员工C 14000
员工E 16000
员工H 19000
员工J 10000
---
研发部门
员工D 15000
员工F 17000
员工I 11000
输入 #2
10000 2
10000 2
10000 2
10000 2
10000 2
10000 2
10000 2
10000 2
10000 2
10000 2
输出 #2
策划部门
---
美术部门
---
研发部门
员工A 10000
员工B 10000
员工C 10000
员工D 10000
员工E 10000
员工F 10000
员工G 10000
员工H 10000
员工I 10000
员工J 10000
说明
工资为 \(1\) 到 \(10^9\) 的整数,部门编号只能是 \(0\)、\(1\)、\(2\)。
必须用 find 定位部门起点、用 count 限制打印人数。样例 #2 十人都在研发部,策划和美术只有标题。
信息
- ID
- 1235
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者