首页 > 编程语言 >CMU-15445(Fall 2023) Project0 C++ Primer 个人笔记

CMU-15445(Fall 2023) Project0 C++ Primer 个人笔记

时间:2024-02-02 16:47:31浏览次数:37  
标签:15445 cur 删除 C++ 查找 Fall CMU 方法 节点

CMU-15445 Project0

c++语法问题我直接问的gpt

测试文件

测试文件都存放在/bustub-private/test目录下,可以自己修改里边的测试方法并且查看有哪些特殊情况需要处理。

Task1

Get方法

使用一个cur节点指向当前正在查找的节点,index指向当前当前正在查找的字符,在children_中查找key[index],没找到则返回nullptr,找到了则更新curindex,查找到最后一个字符进行判断。

Put方法

维护一个cur节点,指向最后一个公共节点,初始值为root_->Clone()。然后遍历key,把公共的节点都Clone一下,同时更新cur节点,直到没有公共节点,再从cur节点处开始插入即可。

当先插入("aaa", 123), 再插入("aa", 456)时,要把aa对应的节点转换成一个带值的节点。

key""单独处理一下,直接存储在根节点当中即可。

image-20240111011656108

Remove方法

查找到要删除的节点,然后根据注释中的说明分情况将节点删除即可。

删除后还要注意当前节点被删除后,父节点可能没有children,那么父节点也需要被删除。我使用递归的方法去检查父节点是否需要删除。

Task2

Get方法直接按照注释实现即可。

Put方法和Remove方法要参考Get方法的实现和任务的要求,仔细思考一下加锁时机即可。

提交

在使用make submit-p0生成zip后,要在根目录调用一下 python3 gradescope_sign.py

通过截图

标签:15445,cur,删除,C++,查找,Fall,CMU,方法,节点
From: https://www.cnblogs.com/fenfeng9/p/18003431

相关文章

  • vs2022支持c++20 import模块功能
    参考链接:https://blog.csdn.net/fellow1984/article/details/124819231工具->获取工具和功能->VisualStudioInstaller->单个组件:搜索C++模块,勾选项目属性对应项修改编译代码即可//helloworldimport<iostream>;intmain(){ std::cout<<"helloworld\n";......
  • CMU 15-445(Fall 2023) Project2 Extendible Hash Index个人笔记
    Task#1-Read/WritePageGuards踩坑BasicPageGuard的移动构造函数:两个PageGuard有可能指向同一个页面,要先判断是否指向同一个页面,如果指向同一个页面直接返回。由于需要将page_属性指向另一个页面,因此要先调用Drop方法放弃对当前指向页面的使用。BasicPageGuard的Drop方......
  • CMU 15-445(Fall 2023) Project1 BUFFER POOL个人笔记
    PROJECT#1-BUFFERPOOL总结本文章不涉及实验要求实现的方法的具体代码,且只包括基础部分的内容。Project1只做了基础部分,没有做针对排行榜的优化。Project1基础部分不算难,但Bustub中只提供了简单的测试样例,通过了本地的测试后提交到gradescope可能拿不了满分,需要根据gradesco......
  • c++结构体数组sort排序出错?(关于sort排序comp比较器的严格弱排序性质)
    在sort函数比较的时候,它会严格弱排序,比较a是否>=b,然后两个对象会进行交换,重新比较一遍,相当于这次比较的是b是否>=aa>=b?满足:trueb<=a?满足:true这样就出现了一个冲突,不管是a>=b还是b>=a都会返回true的情况,我们都知道sort中只要comp返回true,两个元素就会交换一次......
  • C++遴选出特定类型的文件或文件名符合要求的文件
      本文介绍基于C++语言,遍历文件夹中的全部文件,并从中获取指定类型的文件的方法。  首先,我们来明确一下本文所需实现的需求。现在有一个文件夹,其中包含了很多文件,如下图所示;我们如果想获取其中所有类型为.bmp格式的文件的名称,如果文件数量比较多的话,手动筛选就会很麻烦。而借......
  • C++ STL
    listlist的定义与结构极少遇到用list的情况list为双向链表容器,它用节点形式存储元素,并使用指针将节点链接在一起,我们使用时不会用指针,只是list的底层用了指针。它有双向性(可以在常数时间内进行插入,删除与访问操作),动态大小,不连续存储(同链表)。可以用迭代器遍历链表中的元素。l......
  • 【C++】力扣101-分配问题和区间问题
    1.有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃一个饼干,且只有饼干的大小不小于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intcalc......
  • C/C++ 中的宏/Macro
       宏(Macro)本质上就是代码片段,通过别名来使用。在编译前的预处理中,宏会被替换为真实所指代的代码片段,即下图中Preprocessor处理的部分。C/C++代码编译过程-图片来自 ntu.edu.sg根据用法的不同,分两种,Object-like和Function-like。前者用于Object对象,后者......
  • 在Visual Studio中部署GDAL库的C++版本(包括SQLite、PROJ等依赖)
      本文介绍在VisualStudio软件中配置、编译C++环境下GDAL库、SQLite环境与PROJ库的详细方法。  GDAL库是一个非常方便的地理数据处理库,但其在C++环境下的配置与编译流程较为复杂;尤其是最新的GDAL3及以上版本,其在C++环境中的配置更是首先需要满足许多其他的环境配置条件(包括......
  • linux c++读写ini文件,不是用boost
    摘自:https://linuxcpp.0voice.com/?id=65276可以使用标准库中的fstream和string类来读写ini文件。以下是一个示例代码:#include<iostream>#include<fstream>#include<sstream>#include<map>usingnamespacestd;//解析ini文件,返回一个键值对的mapmap<string,string......