C++學習-案例2-員工分組
阿新 • • 發佈:2021-11-06
2 實現步驟
#include <iostream> #include <vector> #include <string> #include <map> #include <ctime> using namespace std; #define CEHUA 0 #define MEISHU 1 #define YANFA 2 /* 公司今天招聘了10個員工(ABCDEFGHIJ),10名員工進入公司之後, 需要指派員工在那個部門工作 員工資訊:姓名 工資組成;部門分為:策劃、美術、研發 隨機給10名員工分配部門和工資 通過multimap進行資訊的插入 key(部門編號) value(員工) 分部門顯示員工資訊*/ class Worker { public: string m_Name; int m_Salary; }; void createWorker(vector<Worker> &v) { string nameSeed = "ABCDEFGHIJ"; for (int i = 0; i < nameSeed.length(); 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 deptId = rand() % 3; //0 1 2 //將員工插入到分組中 //key代表部門的編號,value具體的員工 m.insert(make_pair(deptId,*it)); } } //分組顯示 void showWorkerByGourp(multimap<int, Worker> &m) { //0 A B C 1 D E 2 F G cout << "策劃部門" << endl; multimap<int,Worker>::iterator pos = m.find(CEHUA); int count = 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; cout << "美術部門:" << endl; pos = m.find(MEISHU); count = 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; cout << "研發部門:" << endl; pos = m.find(YANFA); count = m.count(YANFA);//統計具體人數 index = 0; for (; pos != m.end() && index < count; pos++, index++) { cout << "姓名:" << pos->second.m_Name << " 薪資:" << pos->second.m_Salary << endl; } } int main() { //隨機數種子 srand((unsigned int)time(NULL)); //1、建立員工 vector<Worker> vWorker; createWorker(vWorker); //2、員工分組 multimap<int, Worker> mWorker; setGroup(vWorker, mWorker); //3、分組顯示員工 showWorkerByGourp(mWorker); //測試 //for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++) { // cout << "姓名:" << it->m_Name << "工資:" << it->m_Salary << endl; //} system("pause"); return 0; }