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

34 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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