STL-multimap容器示例

题目要求://公司今天招聘5个员工,5名员工进入公司之后,需要指派员工在那个部门工作人员信息有:姓名,年龄,电话和工资等组成,通过multimap进行信息的插入保存和显示分部门显示员工信息。

#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define SALE_DEPARTMENT 1
#define DEVELEP_DEPATMENT 2
#define FINACE_DEPARTMENT 3
//公司今天招聘5个员工,5名员工进入公司之后,需要指派员工在那个部门工作
//人员信息有:姓名,年龄,电话和工资等组成
//通过multimap进行信息的插入保存和显示
//分部门显示员工信息
class Worker
{
public:
	string mName;
	int mAge;
	string mTele;
	int mSalary;
};
//创建员工
void Create_Worker(vector<Worker>& vWorker)
{
	string nameSeed="ABCDE";
	//vector<Worker>vWorker;
	for(int i=0;i<5;i++)
	{
		Worker worker;
		worker.mName="选手";
		worker.mName+=nameSeed[i];
		worker.mAge=rand()%10+20;
		worker.mTele="010-8888888";
		worker.mSalary=rand()%10000+10000;

		vWorker.push_back(worker);
	}
}
//员工分组
void WorkerByGroup(vector<Worker>& vWorker,multimap<int,Worker>& workerGroup)
{
	//随即把员工分配到不同的部门
	for(vector<Worker>::iterator it=vWorker.begin();it!=vWorker.end();it++)
	{
		int departID=rand()%3+1;
		switch(departID)
		{
		case SALE_DEPARTMENT:
			workerGroup.insert(make_pair(SALE_DEPARTMENT,*it));
			break;
		case DEVELEP_DEPATMENT:
			workerGroup.insert(make_pair(DEVELEP_DEPATMENT,*it));
			break;
		case FINACE_DEPARTMENT:
			workerGroup.insert(make_pair(FINACE_DEPARTMENT,*it));
			break;
		default:
			break;
		}
	}
}

void PrintWorker_Information(multimap<int,Worker>& workerGroup,int departID)
{
	//打印销售员工信息
	multimap<int,Worker>::iterator it=workerGroup.find(departID);
	//找当前部门总人数
	int departCount=workerGroup.count(departID);
	int num=0;
	for(multimap<int,Worker>::iterator pos=it;pos!=workerGroup.end()&&num<departCount;pos++,num++)
	{
		cout<<"姓名:"<<pos->second.mName<<" 年龄:"<<pos->second.mAge<<" 工资:"<<pos->second.mSalary<<" 电话:"<<pos->second.mTele<<endl;
	}
}
//打印每一部分员工信息
void PrintWorkerByGroup(multimap<int,Worker>& workerGroup)
{
	cout<<"销售部门"<<endl;
	PrintWorker_Information(workerGroup,SALE_DEPARTMENT);
	cout<<"开发部门"<<endl;
	PrintWorker_Information(workerGroup,DEVELEP_DEPATMENT);
	cout<<"财务部门"<<endl;
	PrintWorker_Information(workerGroup,FINACE_DEPARTMENT);
}
int main()
{
	srand(time(NULL));
	//存放员工信息
	vector<Worker>vWorker;
	//保存分组信息
	multimap<int,Worker>workerGroup;
	//创建员工
	Create_Worker(vWorker);
	//员工分组
	WorkerByGroup(vWorker,workerGroup);
	//打印每一部分员工信息
	PrintWorkerByGroup(workerGroup);

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值