16.10【STL案例2-员工分组】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #include<iostream> #include<cstdlib> using namespace std; #include<vector> #include<string> #include<map> #include<ctime> #define CEHUA 0 #define MEISHU 1 #define YANFA 2 /* 3.10 案例-员工分组 案例描述 公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作 员工信息有: 姓名 工资组成;部门分为:策划、美术、研发 随机给10名员工分配部门和工资 通过multimap进行信息的插入 key(部门编号) value(员工) 分部门显示员工信息 实现步骤 1. 创建10名员工,放到vector中 2. 遍历vector容器,取出每个员工,进行随机分组 3. 分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中 4. 分部门显示员工信息 */ class Worker { public : string name; int salary; }; void create_worker(vector<Worker> & v) { string name_seed = "ABCDEFGHIJ" ; for ( int i=0; i<10; i++) { Worker worker; worker.name = "员工" ; worker.name += name_seed[i]; worker.salary = rand () % 10000 + 10000; //10000~19999 //将员工插入到容器中 v.push_back(worker); } } void set_group(vector<Worker> & v, multimap< int , Worker> & m) { for (vector<Worker>::iterator it=v.begin(); it!=v.end(); it++) { //产生随机部分编号 int dept_id = rand () % 3; //0 1 2 //将员工插入到分组中 m.insert(make_pair(dept_id, *it)); //key=部分编号,value=具体员工 } } void show_worker_by_group(multimap< int , Worker> & m) { cout << "策划部门:" << endl; multimap< int , Worker>::iterator pos = m.find(CEHUA); int num = m.count(CEHUA); int index = 0; for (; pos!=m.end() && index<num; pos++, index++) { cout << "name:" << pos->second.name << " salary:" << pos->second.salary << endl; } cout << "美术部门:" << endl; pos = m.find(MEISHU); num = m.count(MEISHU); index = 0; for (; pos!=m.end() && index<num; pos++, index++) { cout << "name:" << pos->second.name << " salary:" << pos->second.salary << endl; } cout << "研发部门:" << endl; pos = m.find(YANFA); num = m.count(YANFA); index = 0; for (; pos!=m.end() && index<num; pos++, index++) { cout << "name:" << pos->second.name << " salary:" << pos->second.salary << endl; } } int main() { //0 随机种子 srand ((unsigned int ) time (NULL)); //利用系统时间实现真随机 //1 创建员工 vector<Worker> vw; create_worker(vw); /* //测试 for(vector<Worker>::iterator it=vw.begin(); it!=vw.end(); it++) { cout << "name:" << it->name << " salary:" << it->salary << endl; } */ //2 员工分组 multimap< int , Worker> mw; set_group(vw, mw); //3 分组显示员工 show_worker_by_group(mw); system ( "pause" ); return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!