- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基础数据结构项目介绍
基础数据结构项目介绍
上海交通大学 ACM班
INTRODUCTION
实现C++STL中的一些数据结构,容器,算法
要求模板化
具体内容与要求
数据结构:
Vector
List
Deque
Map
Unordered_map
容器:
Stack
Queue
Prioirty_queue
算法:
Sort
list_sort
Make_heap
EXCEPTION
在头文件中,有一些标出需要抛出异常的情况,请抛出异常,助教在测试的时候可能会编写产生异常的代码,然后catch检查是否抛出异常,以及异常抛出是否正确。
在EXCEPTION头文件中已经定义了一些异常,定义不完全,需要你们继续完善,异常类也没有写完。
VECTOR
实现一个支持随机访问的线性表以及相关的迭代器
Bonus:C++STL中迭代器的有效性由程序员保证,也就是说,编译器或者程序并不知道之前的迭代器是否是有效的,所以如果你编写的迭代器可以判断自身是否是有效的,或者你有一个办法可以判断你编写的迭代器是否失效,那么你将会获得最多10%的bonus。
失效定义:
指向了错误的元素,或者内存地址。
LIST
实现一个不支持随机访问,但是可以快速插入删除的线性表(基于双向链表)以及相关的迭代器
Bonus:C++STL中迭代器的有效性由程序员保证,也就是说,编译器或者程序并不知道之前的迭代器是否是有效的,所以如果你编写的迭代器可以判断自身是否是有效的,或者你有一个办法可以判断你编写的迭代器是否失效,那么你将会获得最多10%的bonus。
DEque
实现一个可以从两个方向添加,删除元素的队列,需要支持高效的随机访问,以及相关的迭代器。
进阶:块状链表实现(5%bonus)
Bonus:C++STL中迭代器的有效性由程序员保证,也就是说,编译器或者程序并不知道之前的迭代器是否是有效的,所以如果你编写的迭代器可以判断自身是否是有效的,或者你有一个办法可以判断你编写的迭代器是否失效,那么你将会获得最多10%的bonus。
MAP
一个基于BST(Binary Search Tree)的保存(key, value)映射关系的数据结构,以及相关迭代器。
如果你使用了高水平组中作为bonus项目的数据结构来实现的话,请告诉助教,助教在检查代码之后可以给出最高20%的bonus
Bonus:C++STL中迭代器的有效性由程序员保证,也就是说,编译器或者程序并不知道之前的迭代器是否是有效的,所以如果你编写的迭代器可以判断自身是否是有效的,或者你有一个办法可以判断你编写的迭代器是否失效,那么你将会获得最多10%的bonus。
UNORDERED_MAP
一个基于hash table的保存(key, value)映射关系的数据结构,以及相关迭代器。
Bonus:C++STL中迭代器的有效性由程序员保证,也就是说,编译器或者程序并不知道之前的迭代器是否是有效的,所以如果你编写的迭代器可以判断自身是否是有效的,或者你有一个办法可以判断你编写的迭代器是否失效,那么你将会获得最多10%的bonus。
Stack,queue
栈和队列,不多说了
Priority_queue
优先队列,使用堆实现
如果使用二项堆,斐波那契堆等数据结构实现,请告诉助教,助教检查代码之后会给出最多20%的bonus
SORT
针对vector的排序,调用方式类似std::sort
LIST_SORT
针对list的sort
MAKE_HEAP
把指定范围内的数据变成堆
实现的要求
按照函数中的注释实现代码, 注意返回值.
对于模板参数为int, long long的实例化, 没有编译错误.
实现正确, 对于模板参数为int, long long类型的实例化能够不出现运行时错误, 得到正确结果.
因为是模板类, 所以应具有通用性, 即对于各种模板参数都能通过编译.
提示: 没有默认赋值操作符的类, 没有无参数初始化函数的类
能正确地析构容器中的元素. 即每个时刻存活的(即没有析构的)对象的个数要等于当前容器的size.
不能内存泄露.
评分方法
代码提交
为了减轻同学们在最终的Deadline之前的压力,我们采取分阶段提交、评测的方法。
Week 6:vector
Week 7:list
Week 8:stack,queue,priority_queue
Week 9:map
Week 10:unordered_map
Week 11:deque
Week 12:algorithm
Week 13:复测
代码提交
提交的时候请打包所有的头文件,包括不是本周应该提交的,同时提交的代码中不应该包含多余的文件。
出现错交,漏交,迟交等情况,所造成的后果助教概不负责。
关于代码的一些额外说明
关于头文件的获取
由于还有两个文
文档评论(0)