map案例搭建

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


/*
map查找函数
count(keyElem)返回容器中key为keyElem的对组个数,对map来说,要么是0,要么是1,对multimap来说,值可能大于1
*/


# include <iostream>
# include <vector>
# include <string>
# include <map>
# include <list>
# include <deque>
# include <set>
# include <queue>
# include <stack>
# include <string>
# include <cstdlib>


using namespace std;


# define FINACIAL_DEPATMENT 0 //财务部门
# define SALE_DEPATMENT 1 //销售部门
# define DEVELOP_DEPATMENT 2 //研发部门
# define ALL_DEPATMENT 4 //所有部门


class Worker
{
public:
string mname;
string mTele;//电话
int mAge;
int mSalary;
};


//创建员工
void CreateWorker(vector<Worker> &vWorker)
{
string seedName = "ABCDE";
for(int i = 0; i < 5; i++)
{
Worker worker;
worker.mname = "员工";
worker.mname += seedName[i];


worker.mAge = rand() % 10 + 20;
worker.mTele = "010-8888888";
worker.mSalary = rand() % 10000 + 10000; 


//保存员工信息
vWorker.push_back(worker);
}
}
//员工分组
void WorkerByGorup(vector<Worker> &vWorker, multimap<int, Worker> &WorkerGroup)
{
//把员工随机分配不同部门
for(vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++)
{
int departID = rand() % 3;
switch(departID)
{
//财务部门
case FINACIAL_DEPATMENT:
WorkerGroup.insert(make_pair(FINACIAL_DEPATMENT, *it));
break;
//销售部门
case SALE_DEPATMENT:
WorkerGroup.insert(make_pair(SALE_DEPATMENT, *it));
break;
//研发部门
case DEVELOP_DEPATMENT:
WorkerGroup.insert(make_pair(DEVELOP_DEPATMENT, *it));
break;
}
}
}
void ShowGroupWorkers(multimap<int, Worker>& WorkerGroup, int departID)
{
//打印销售部员工的信息
multimap<int, Worker>::iterator it = WorkerGroup.find(departID);
//找当前部门总人数
int DepatrCount = WorkerGroup.count(departID);
int num = 0;
for(multimap<int, Worker>::iterator pos = it; it != WorkerGroup.end() && num < DepatrCount; pos++, num++)
{
cout << "姓名:" <<pos->second.mname << " 年龄:" << pos->second.mAge << " 电话" << pos->second.mSalary << endl;
}
}
//打印每一部门的员工信息
void PrintWorkerByGroup(multimap<int, Worker>  &WorkerGroup)
{
//显示销售部门
cout << "销售部门: " << endl;
ShowGroupWorkers(WorkerGroup, SALE_DEPATMENT);
//显示研发部门
cout << "研发部门: " << endl;
ShowGroupWorkers(WorkerGroup, DEVELOP_DEPATMENT);
//显示财务部门
cout << "财务部门: " << endl;
ShowGroupWorkers(WorkerGroup, FINACIAL_DEPATMENT);
}






int main(int argc, char *argv[])
{
//存放新员工的信息
vector<Worker> vWorker;
//multimap保存分组信息
multimap<int, Worker> WorkerGroup;
//创建员工
CreateWorker(vWorker);
//员工分组
WorkerByGorup(vWorker, WorkerGroup);
//打印每一部门的员工信息
PrintWorkerByGroup(WorkerGroup);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值