在教职工信息管理系统中,使用链表和类,编写一段统计学历人数的代码,应该如何思考并改进优化为统计各系各学历人数的代码?
时间: 2024-03-07 18:48:39 浏览: 65
要统计各系各学历的人数,可以在统计学历人数的基础上,再加上对系别的统计。具体实现方法是,先定义一个包含系别和学历的结构体,然后使用一个map来存储各系各学历的人数。
代码示例:
```cpp
struct DeptEdu {
string department;
string education;
bool operator<(const DeptEdu& other) const {
if (department != other.department) {
return department < other.department;
}
return education < other.education;
}
};
void countDeptEdu() {
map<DeptEdu, int> deptEduCount;
Node* p = head->next;
while (p != nullptr) {
string& department = p->getData().getDepartment();
string& education = p->getData().getEducation();
deptEduCount[{department, education}]++;
p = p->getNext();
}
for (auto& [deptEdu, count] : deptEduCount) {
cout << deptEdu.department << " " << deptEdu.education << ": " << count << endl;
}
}
```
在这里,我们使用了一个自定义的结构体DeptEdu来表示包含系别和学历的信息,并重载了小于号运算符,以便在map中进行排序和查找。同时,我们还使用auto关键字来简化迭代器的声明。
阅读全文