CMU 15-445(Fall 2023) Project0 C++ Primer 个人笔记
CMU-15445 Project0
c++语法问题我直接问的gpt
测试文件#
测试文件都存放在/bustub-private/test
目录下,可以自己修改里边的测试方法并且查看有哪些特殊情况需要处理。
Task1#
Get方法#
使用一个cur
节点指向当前正在查找的节点,index
指向当前当前正在查找的字符,在children_
中查找key[index]
,没找到则返回nullptr
,找到了则更新cur
和index
,查找到最后一个字符进行判断。
Put方法#
维护一个cur
节点,指向最后一个公共节点,初始值为root_->Clone()
。然后遍历key
,把公共的节点都Clone
一下,同时更新cur
节点,直到没有公共节点,再从cur
节点处开始插入即可。
当先插入("aaa", 123)
, 再插入("aa", 456)
时,要把aa
对应的节点转换成一个带值的节点。
当key
是""
单独处理一下,直接存储在根节点当中即可。
Remove方法#
查找到要删除的节点,然后根据注释中的说明分情况将节点删除即可。
删除后还要注意当前节点被删除后,父节点可能没有children
,那么父节点也需要被删除。我使用递归的方法去检查父节点是否需要删除。
Task2#
Get方法直接按照注释实现即可。
Put方法和Remove方法要参考Get方法的实现和任务的要求,仔细思考一下加锁时机即可。
提交#
在使用make submit-p0
生成zip后,要在根目录调用一下 python3 gradescope_sign.py
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通