0
点赞
收藏
分享

微信扫一扫

STL练习之员工分组

Python百事通 2022-04-13 阅读 70

员工分组

结合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;
}

在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论