黑马C++基础练习《员工分类》采用 multimap&vector容器

    科技2022-08-05  127

    项目要求:

    1:创建若干员工,赋初值。

    2:为每位员工分配相应的岗位。

    3:按照岗位分批输出人员信息。

    项目思路:

    创建员工类,并采用vector容器存储员工信息。由于multimap可以存储同一key值,故采用该容器。

    遍历vector容器析出*it(员工对象),并对其赋值(部门值)

    for(vector<Person>::iterator it = v.begin(); it != v.end(); it ++) { //multimap<int,Person> m; int deptID = rand() % 3; //*it == Person P; m.insert(dept,*it) }

    因为multimap容器是自动排序,所以可以使用count接口统计当前元素有多少位,利用fine接口找到目标元素起始位置迭代器。

    void PrintPerson() { int index = 0; multimap<int,Person>::iterator _mit = m.find(KAIFA)//返回目标元素迭代器。 int count = m.count(KAIFA); for(;_mit != m.end() && index < count;index++ , _mit++) { cout<<_mit->second.name...... } }

    CODE部分:

    #include <iostream> #include <vector> #include <map> #include <ctime> using namespace std; #define KAIFA 0 #define YUNWEI 1 #define SHICHANG 2 class Person { public: Person(string name, int salary) :m_name(name), m_salary(salary) {} string m_name; int m_salary; }; void setPerson(vector<Person>& V) { string seedname = "ABCDEFGHIJ"; for (int i = 0; i < 10; i++) { string name = "员工"; name += seedname[i]; int salary = rand() % 5001 + 5000; Person P(name, salary); V.push_back(P); } } void setGroup(vector<Person>& V, multimap<int, Person>& M) { srand((unsigned int)time(NULL)); for (vector<Person>::iterator vit = V.begin(); vit != V.end(); vit++) { int deptID = rand() % 3; M.insert(make_pair(deptID, *vit)); } } void PrintPerson(const multimap<int, Person>& M) { //显示开发部门人员 multimap<int, Person>::const_iterator _mit; int index = 0; int count; cout << "---------开发---------" << endl; _mit = M.find(KAIFA); count = M.count(KAIFA); for (; _mit != M.end() && index < count; _mit++, index++) { cout << _mit->second.m_name << " 工资:" << _mit->second.m_salary << endl; } index = 0; cout << "---------运维---------" << endl; _mit = M.find(YUNWEI); count = M.count(YUNWEI); for (; _mit != M.end() && index < count; _mit++, index++) { cout << _mit->second.m_name << " 工资:" << _mit->second.m_salary << endl; } index = 0; cout << "---------市场---------" << endl; _mit = M.find(SHICHANG); count = M.count(SHICHANG); for (; _mit != M.end() && index < count; _mit++, index++) { cout << _mit->second.m_name << " 工资:" << _mit->second.m_salary << endl; } index = 0; } int main() { vector<Person>v; multimap<int, Person>m; setPerson(v); setGroup(v, m); PrintPerson(m); system("pause"); return 0; }

     

    Processed: 0.009, SQL: 8