案例描述
公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作
员工信息有: 姓名 工资组成;部门分为:策划、美术、研发
随机给10名员工分配部门和工资
通过multimap进行信息的插入 key(部门编号) value(员工)
分部门显示员工信息
实现步骤
1. 创建10名员工,放到vector中
2. 遍历vector容器,取出每个员工,进行随机分组
3. 分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中
4. 分部门显示员工信息
#include <iostream>
#include<vector>
#include<algorithm>//算法 头文件
#include<map>
#define CEHUA 0
#define MEISHU 1
#define YANFA 2
//#include<ctime>
using namespace std;
//multimap允许容器中有重复key值元素
//案例描述
//公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作
//员工信息有: 姓名 工资组成;部门分为:策划、美术、研发
//随机给10名员工分配部门和工资
//通过multimap进行信息的插入 key(部门编号) value(员工)
//分部门显示员工信息
// 实现步骤
//1. 创建10名员工,放到vector中
//2. 遍历vector容器,取出每个员工,进行随机分组
//3. 分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中
//4. 分部门显示员工信息
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 showWorkerByGroup(multimap<int,Worker>&m){
cout<<"策划部门:"<<endl;
int count=m.count(CEHUA);//统计具体人数
multimap<int,Worker>::iterator pos=m.find(CEHUA);
int index=0;
for(;pos!=m.end()&&index<count;pos++,index++)//加上表示只遍历策划部的
{
cout<<"姓名"<<pos->second.m_Name<<"工资"<<pos->second.m_Salary<<endl;
}
cout<<"-----------------------------------------------"<<endl;
cout<<"美术部门"<<endl;
//可直接复用
count=m.count(MEISHU);//统计具体人数
pos=m.find(MEISHU);
index=0;
for(;pos!=m.end()&&index<count;pos++,index++)//加上表示只遍历策划部的
{
cout<<"姓名"<<pos->second.m_Name<<"工资"<<pos->second.m_Salary<<endl;
}
}
int main()
{
// srand((unsigned int)time(NULL));
//1.创建员工
vector<Worker>vWorker;
createWorker(vWorker);
//2.员工分组
multimap<int,Worker>mWorker;
setGroup(vWorker,mWorker);
//3分组显示分组员工
showWorkerByGroup(mWorker);
//测试
// for(vector<Worker>::iterator it=vWorker.begin();it!=vWorker.end();it++){
// cout<<"姓名"<<it->m_Name<<"工资"<<it->m_Salary<<endl;
// }
system("pause");
}
注意看代码注释