案例描述:
招聘10个员工,入职后,需要指派员工在哪个部门工作;
员工信息:姓名,工资;部门分为:策划、美术、研发;随机给10名员工分配部门和工资;通过multimap进行信息的插入:key(部门编号),value(员工);分部门显示员工信息;
思路:
创建10名员工,放到vector中;遍历vector,取出每个员工,进行随机分组;分组后,将员工部门编号作为key,具体员工为value,放到multimap中;分部门显示员工信息;
#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
#include<string>
#include<ctime>
#define CH 0
#define MS 1
#define YF 2
using namespace std
;
class Person {
public:
string m_Name
;
int m_Wage
;
};
void creatWorker(vector
<Person
>&v
) {
string name
= "ABCEEFGHIJ";
for (int i
= 0; i
< 10;i
++) {
Person p
;
p
.m_Name
= "员工";
p
.m_Name
+= name
[i
];
p
.m_Wage
= rand() % 10000 + 10000;
v
.push_back(p
);
}
}
void setGroup(vector
<Person
>&v
, multimap
<int, Person
>&m
) {
for (vector
<Person
>::iterator it
= v
.begin(); it
!= v
.end(); it
++) {
int depId
= rand() % 3;
m
.insert(make_pair(depId
, *it
));
}
}
void show(multimap
<int, Person
>&m
)
{
cout
<< "策划部门:" << endl
;
multimap
<int, Person
>::iterator pos
= m
.find(CH
);
int count
= m
.count(CH
);
int index
= 0;
for (; pos
!= m
.end() && index
< count
; pos
++,index
++) {
cout
<< "姓名:" << pos
->second
.m_Name
<< "工资:" << pos
->second
.m_Wage
<< endl
;
}
cout
<< "美术部门:" << endl
;
pos
= m
.find(MS
);
count
= m
.count(MS
);
index
= 0;
for (; pos
!= m
.end() && index
< count
; pos
++, index
++) {
cout
<< "姓名:" << pos
->second
.m_Name
<< "工资:" << pos
->second
.m_Wage
<< endl
;
}
cout
<< "研发部门:" << endl
;
pos
= m
.find(YF
);
count
= m
.count(YF
);
index
= 0;
for (; pos
!= m
.end() && index
< count
; pos
++, index
++) {
cout
<< "姓名:" << pos
->second
.m_Name
<< "工资:" << pos
->second
.m_Wage
<< endl
;
}
}
void test() {
srand((unsigned int)time(NULL));
vector
<Person
>v
;
creatWorker(v
);
multimap
<int, Person
>m
;
setGroup(v
,m
);
show(m
);
}
int main() {
test();
system("pause");
return 0;
}