s++STL容器之员工分组案例
发布时间:2020-12-16 09:06:46 所属栏目:百科 来源:网络整理
导读:描述: 1.10个员工ABCDEFGHIJ进入公司后分配到各个部门; 2.员工信息有:姓名、工资组成;部门信息有:策划、美术、研发; 3.随机给10名员工分配部门和工资; 4.通过Multimap进行信息的输入;key:部门编号,value:员工 5.分部门显示员工信息; srand((unsi
描述: 1.10个员工ABCDEFGHIJ进入公司后分配到各个部门; 2.员工信息有:姓名、工资组成;部门信息有:策划、美术、研发; 3.随机给10名员工分配部门和工资; 4.通过Multimap进行信息的输入;key:部门编号,value:员工 5.分部门显示员工信息; srand((unsigned)time(NULL)):为了防止随机数每次重复,常常使用系统时间来初始化#include<iostream> using namespace std; #include <vector> #include <string> #include <map> #include <ctime> /* - 公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作 - 员工信息有: 姓名 工资组成;部门分为:策划、美术、研发 - 随机给10名员工分配部门和工资 - 通过multimap进行信息的插入 key(部门编号) value(员工) - 分部门显示员工信息 */ #define CEHUA 0 #define MEISHU 1 #define YANFA 2 class Worker { public: string m_Name; int m_Salary; }; void createWorker(vector<Worker>&v) { string nameSeed = "ABCDEFGHIJ"; for (int i = 0; i < 10; i++) { Worker worker; worker.m_Name = 员工; worker.m_Name += nameSeed[i]; worker.m_Salary = rand() % 10000 + 10000; // 10000 ~ 19999 将员工放入到容器中 v.push_back(worker); } } 员工分组 void setGroup(vector<Worker>&v,multimap<int,Worker>&m) { for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++) { 产生随机部门编号 int deptId = rand() % 3; 0 1 2 将员工插入到分组中 key部门编号,value具体员工 m.insert(make_pair(deptId,*it)); } } void showWorkerByGourp(multimap< 0 A B C 1 D E 2 F G ... cout << 策划部门:" << endl; multimap< m.find(CEHUA); int count = m.count(CEHUA); 统计具体人数 int index = 0for (; pos != m.end() && index < count; pos++,index++) { cout << 姓名: " << pos->second.m_Name << 工资: " << pos->second.m_Salary << endl; } cout << ---------------------- endl; cout << 美术部门: endl; pos = m.find(MEISHU); count = m.count(MEISHU); 统计具体人数 index = 研发部门: m.find(YANFA); count = m.count(YANFA); endl; } } main() { srand((unsigned )time(NULL)); 1、创建员工 vector<Worker>vWorker; createWorker(vWorker); 2、员工分组 multimap<mWorker; setGroup(vWorker,mWorker); 3、分组显示员工 showWorkerByGourp(mWorker); ////测试 for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++) { cout << "姓名: " << it->m_Name << " 工资: " << it->m_Salary << endl; } system(pause); return ; } 输出: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |