员工分组
结合vector容器和multimap容器,实现员工的分组
需求:
- 10名员工,有姓名和工资属性;三个部门:策划,美术,研发
- 工资和部门随机
- 员工存放在vector里,然后部门中使用multimap存放分组信息
代码如下:
//练习--员工分组
//10名员工,有姓名和工资属性;三个部门:策划,美术,研发
//员工存放在vector里,然后部门中使用multimap存放分组信息
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <ctime>
using namespace std;
#define DESIGN 0
#define ARTIST 1
#define DEVELOPER 2
class Worker
{
public:
string name;
int salary;
};
void pushWorker(vector<Worker>& v)
{
v.reserve(10);
string nameseed = "ABCDEFGHIJ";
for (int i = 0; i < 10; i++)
{
string name = "员工";
name += nameseed[i];
Worker w;
w.name = name;
w.salary = rand() % 10000 + 10000;
v.push_back(w);
}
}
void groupingWorker(vector<Worker>& w, multimap<int, Worker>& mm)
{
for (vector<Worker>::iterator it = w.begin(); it != w.end(); it++)
{
mm.insert(make_pair(rand() % 3, *it));
}
}
void showWorkerByGroup(multimap<int, Worker>& mm)
{
multimap<int, Worker>::iterator begin = mm.find(DESIGN);
cout << "---------------------策划部门------------------\n";
for (; begin != mm.find(ARTIST); begin++)
{
cout << "姓名:" << begin->second.name << " 薪资:" << begin->second.salary << endl;
}
cout << "---------------------美术部门------------------\n";
for (; begin != mm.find(DEVELOPER); begin++)
{
cout << "姓名:" << begin->second.name << " 薪资:" << begin->second.salary << endl;
}
cout << "---------------------研发部门------------------\n";
for (; begin != mm.end(); begin++)
{
cout << "姓名:" << begin->second.name << " 薪资:" << begin->second.salary << endl;
}
}
int main()
{
srand((unsigned int)time(NULL));
//1、创建员工
vector<Worker> vWorker;
pushWorker(vWorker);
//2、员工分组
multimap<int, Worker> mmWorker;
groupingWorker(vWorker, mmWorker);
//3、显示员工分组信息
showWorkerByGroup(mmWorker);
return 0;
}