HM236 员工分部门

HM236 员工分部门

HM236 员工分部门

来源: 第 236 集 STL案例2-员工分组

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

公司招了 \(10\) 名员工,姓名用种子串 ABCDEFGHIJ 拼出:先写下前缀 员工,再追加第 \(i\) 个字母,得到 员工A员工J。每名员工有姓名和工资。三个部门编号为:策划 \(0\)、美术 \(1\)、研发 \(2\)。

实现步骤必须按下面三步,容器参数按**引用**传入:

  1. 创建员工:把 \(10\) 人放进 vector。人物类(或结构体)用公开成员记录姓名和工资,可以先不写构造函数,创建后再赋值。
  2. 分组:遍历向量,按输入给定的部门编号,把“部门编号 + 该员工”插入 multimap。键是部门,实值是员工。同一部门会有多人,键会重复,所以必须用 multimap 而不是 map。插入用 make_pair
  3. 分部门显示:对每个部门,先 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
通过率
?
上传者