Files
STLite-ACM-2024/map
Polaris_Dane b48b580e1c Added map
2024-03-24 15:42:18 +08:00
..
2024-03-24 15:42:18 +08:00
2024-03-24 15:42:18 +08:00
2024-03-24 15:42:18 +08:00
2024-03-24 15:42:18 +08:00

作业要求

  • 这次大作业要求实现与 C++ 标准库类似的数据结构 map包括迭代器等。框架接口在已本仓库中给出只需要实现.hpp文件内所要求的内容即可。
  • B班实现可以 AVL 树、AA 树、红黑树三选一A 班实现红黑树。
  • 你需要完成下发文件中的作业代码,在 OJ 上面提交map.hpp,要求可以实现 map 的基本操作,并且具有一定的鲁棒性。
  • Bonus: 在测试数据中有一些type_traits的测试,感兴趣可以尝试。具体的工作以及计分方法尚未确定,后续可能会有更新。
  • 在本作业中,只允许使用cstdiocstringiostreamcmathstring五个 C++ 标准库,如需使用其他功能请自行实现。
  • 我们会检查内存泄漏,如果还不会测内存泄漏,可以看教程如何检测内存泄漏?

下发文件

  • data directory: 测试源码和正确输出
  • map.hpp: 提供接口,完成TODO部分代码,请不要随意改动接口,否则会导致测评代码不能正确调用你的文件。
  • exception.hpp utility.hpp: 保证测试在本地正确运行的相关代码,请不要随意改动。
  • 最终 OJ 测试仅仅需map.hpp

实现细节

可能需要注意的细节:

  • 在测试点中,有一些类并不具有默认构造函数,所以直接使用T* p=new T[...];可能会出现问题。
  • 你的程序将会受到一定程度的鲁棒性检测

分数构成

  • 总得分 = 80%(OJ 测试部分) + 20%(code review)=80%(OJ 测试部分) + 16% (基础问题) + 4% (Bonus)
  • 注意事项:
    1. 使用普通的二叉搜索树完成此题最终得分为0.4*以上得分
    2. 使用非二叉搜索树、以及要求的算法外的方法完成此题最终得分为0.7*以上得分
  • 关于 Bonus 可以是对容器或者迭代器的某个行为的优化type_traits 相关应用或其他有创意的想法,在 code review 时展示即可(本部分后续会有更新,可能涉及具体工作的改变)
  • 学术诚信问题:如果在 CR 时,发现有任何违规行为(包括但不限于使用其它头文件、使用非常规方法通过测试点),你最终的得分都有可能为 0 分。

截止日期

作业时间为三周,即 ddl 设在第八周周日上机课之前(4月14号 18:30),大家合理安排时间完成~