本文主要以员工分组为例介绍STL综合性的案例。目录如下,建议收藏阅读
文章目录
一、案例描述
公司今天招募了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作。
员工信息由:姓名 工资。部门为:策划、美术、研发。
随机给10名员工分配部门和工资。
通过multimap进行信息的插入。key(部门编号)value(员工)
分部门显示员工信息。
二、实现思路分析
1、案例框架搭建
创建10名员工,放到vector中
遍历vector容器,取出每个员工,进行随机分组。
分组后,将员工部门编号为key,具体员工作为value,放入到multimao容器中。
分部门显示员工信息。
cpp
//1、创建员工
CreatWorker(vWorker);
//2、分组
setGroup(vWorker,mWorker);
//3、分组显示员工
ShowWorkerByGroup(mWorker);
2、业务函数实现
cpp
void CreatWorker(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 depID = rand() % 3;
//将员工插入到分组中
m.insert(pair<int, Worker>(depID, *it));
}
}
void ShowWorkerByGroup(multimap<int, Worker> &m)
{
cout << "========策划部门=========" << endl;
multimap<int,Worker>::iterator pos = m.find(CEHUA);
int count = (int)m.count(CEHUA);
int index = 0;
for (; pos != m.end() && index < count; pos++,index++)
{
cout << "姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Salary << endl;
}
cout << "========美术部门=========" << endl;
count = (int)m.count(MEISHU);
index = 0;
for (; pos != m.end() && index < count; pos++, index++)
{
cout << "姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Salary << endl;
}
cout << "========研发部门=========" << endl;
count = (int)m.count(YANFA);
index = 0;
for (; pos != m.end() && index < count; pos++, index++)
{
cout << "姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Salary << endl;
}
}