(1)定义一个集合类HashTable的对象stu_cour。在stu_cour中,key是sno,value是一个Vector(包含该学生所选的所有Course对象)。 (2)定义一个集合类HashTable的对象cour_stu。在cour_stu中,key是cno,value是一个Vector(包含选择该课程的所有Stuedent对象)。 (3)自己向stu_cour和cour_stu中添加元素。 (4)遍历stu_cour,打印出每一位学生的选课情况。 遍历cour_stu,打印出每一门课程被选的情况。

时间: 2024-03-23 18:41:11 浏览: 16
好的,以下是实现上述功能的代码,其中用到了C++11标准的unordered_map和vector容器: ```c++ #include <iostream> #include <string> #include <vector> #include <unordered_map> using namespace std; // 定义 Course 类 class Course { public: string cno; // 课程编号 string cname; // 课程名称 }; // 定义 Student 类 class Student { public: string sno; // 学生编号 string sname; // 学生姓名 vector<Course> courses; // 该学生所选的课程 }; // 定义 HashTable 类 class HashTable { public: unordered_map<string, vector<Course>> stu_cour; // 以学生编号为 key,以所选课程的 vector 为 value unordered_map<string, vector<Student>> cour_stu; // 以课程编号为 key,以选择该课程的学生的 vector 为 value }; int main() { // 创建 HashTable 对象 HashTable table; // 添加元素到 stu_cour 中 Course c1 = {"c1", "高等数学"}; Course c2 = {"c2", "线性代数"}; Course c3 = {"c3", "离散数学"}; Student s1 = {"s1", "张三", {c1, c2}}; Student s2 = {"s2", "李四", {c1, c3}}; Student s3 = {"s3", "王五", {c2, c3}}; table.stu_cour[s1.sno] = s1.courses; table.stu_cour[s2.sno] = s2.courses; table.stu_cour[s3.sno] = s3.courses; // 添加元素到 cour_stu 中 table.cour_stu[c1.cno].push_back(s1); table.cour_stu[c1.cno].push_back(s2); table.cour_stu[c2.cno].push_back(s1); table.cour_stu[c2.cno].push_back(s3); table.cour_stu[c3.cno].push_back(s2); table.cour_stu[c3.cno].push_back(s3); // 遍历 stu_cour,打印出每一位学生的选课情况 for (auto it = table.stu_cour.begin(); it != table.stu_cour.end(); ++it) { cout << "学生 " << it->first << " 选了以下课程:" << endl; for (auto c : it->second) { cout << "课程编号:" << c.cno << ",课程名称:" << c.cname << endl; } } // 遍历 cour_stu,打印出每一门课程被选的情况 for (auto it = table.cour_stu.begin(); it != table.cour_stu.end(); ++it) { cout << "课程 " << it->first << " 被以下学生选了:" << endl; for (auto s : it->second) { cout << "学生编号:" << s.sno << ",学生姓名:" << s.sname << endl; } } return 0; } ``` 在上述代码中,我们首先定义了Course、Student和HashTable三个类,然后创建了一个HashTable对象table。接着,我们向stu_cour和cour_stu中添加了元素,然后使用for循环遍历了stu_cour和cour_stu并打印出结果。在输出结果时,我们使用了auto关键字和范围for循环来简化代码,以提高可读性和可维护性。

相关推荐

最新推荐

recommend-type

C#_集合类_Array,Arraylist,List,Hashtable,Dictionary,Stack,Queue_学习资料

我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的化 用Dictionary&lt;TKey,TValue&gt; 集合类来存储数据就...
recommend-type

C#中哈希表(HashTable)用法实例详解(添加/移除/判断/遍历/排序等)

主要介绍了C#中哈希表(HashTable)用法,简单讲述了哈希表的原理并结合实例形式详细分析了C#针对哈希表进行添加、移除、判断、遍历、排序等操作的实现技巧,需要的朋友可以参考下
recommend-type

实验05 Java集合.doc

1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证...
recommend-type

Java容器类List、ArrayList、Vector及map、HashTable应用

List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 使用容器排序 Vector由于使用了synchronized方法(线程安全)
recommend-type

HashMap和HashTable底层原理以及常见面试题

今天小编就为大家分享一篇关于HashMap和HashTable底层原理以及常见面试题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用

![MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用](https://img-blog.csdnimg.cn/2020050917173284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70) # 1. MATLAB取整函数概述** MATLAB取整函数是一组强大的工具,用于对数值进行
recommend-type

我想做python的算法工程师,我应该学什么?学习的顺序是什么?网上有什么推荐的免费课程吗?回答具体精确一点不要太笼统

对于想要成为 Python 算法工程师的人来说,他们应该先从掌握 Python 的基础语法开始,然后学习数据结构和算法,并且要深入了解 Python 中的一些科学计算和数据处理库,比如 NumPy、Pandas 等。 学习的顺序可以是先学习基础语法和编程技巧,然后再学习数据结构和算法相关的知识,最后深入了解数据处理和科学计算相关的库。 对于免费课程的推荐,我建议你可以先去 Coursera、edX、Udacity 等网站上寻找相关课程,这些网站上有很多优质的 Python 编程和算法课程,你可以根据自己的需求和学习进度进行选择。此外,还可以考虑一些在线编程网站,如 HackerRank、L
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。