题目:
员工信息:姓名,工资
部门:策划,美术,研发
随机给10名员工分配工资部门
通过multimap容器进行信息插入,key为部门编号,value员工
分部门显示员工信息
步骤:
1.创建10个员工,放到vector中
2.遍历vector,取出每个员工,进行随机分配职位
3.分组后,将员工部门编号作为key,具体工作作为value,放到multimap容器中
4.分部门显示员工信息
例子:
#include <iostream> using namespace std; #include <ctime> #include <string> #include <vector> #include <map> #define CEHUA 0 #define MEISHU 1 #define YANFA 2 class Person //自定义类 { public: string m_name; int m_salary; }; //创建员工 void CreatePerson(vector<Person>& p) { string Per_name = "ABCDEFGHIJ"; for(int i=0;i<10;i++) { Person s; s.m_name = "员工"; s.m_name += Per_name[i]; //增加姓名 s.m_salary = rand()%10000+10000; //随机工资 p.push_back(s); //放入容器中 } } //创建随机部门 void Createdepat(vector<Person>&p,multimap<int,Person>&m) //引用 { for(vector<Person>::iterator it = p.begin();it!=p.end();it++) { int Id = rand()%3; m.insert(make_pair(Id,*it)); //将部门编号与人员放入容器中 } } //显示部门人员 void PrintPerson(multimap<int,Person>& m) { cout<<"策划部门:"<<endl; multimap<int,Person>::iterator it = m.find(CEHUA); //找到指向的位置迭代器 int count = m.count(CEHUA); //统计对应人数 int index = 0; for(;it!=m.end()&&index<count;index++,it++) //迭代器位置与index一起进行移动,count为对应的人数 { cout<<"姓名:"<<it->second.m_name<<" 工资:"<<it->second.m_salary<<endl; } cout<<"美术部门:"<<endl; it = m.find(MEISHU); count = m.count(MEISHU); index = 0; for(;it!=m.end()&&index<count;index++,it++) { cout<<"姓名:"<<it->second.m_name<<" 工资:"<<it->second.m_salary<<endl; } cout<<"研发部门:"<<endl; it = m.find(YANFA); count = m.count(YANFA); index = 0; for(;it!=m.end()&&index<count;index++,it++) { cout<<"姓名:"<<it->second.m_name<<" 工资:"<<it->second.m_salary<<endl; } } int main() { srand((unsigned int)time(NULL)); //1.创建10个员工放在vector中 vector<Person> p; CreatePerson(p); 测试 //for(vector<Person>::iterator it = p.begin();it!=p.end();it++) //{ // cout<<"姓名:"<<it->m_name<<" 薪水:"<<it->m_salary<<endl; //} //2.进行分部门 multimap<int,Person> m; Createdepat(p,m); //3.显示人员信息 PrintPerson(m); system("pause"); return 0; }