C++ Primer
CMU-15445汇总
本文对应的project版本为CMU-Spring-2023的project0
默认读者已经学会了字典树Trie
Task1 Copy-On-Write Trie
Task1要求实现一个可持久化字典树,可持久化字典树的定义大概就是,每次更改操作(Put或者Remove)都会生成一个新的字典树版本,并保留历史版本,且各版本间的查询操作不相互影响。
按照文档要求,我们主要实现Trie类中的三个方法:
const T* Get(std::string_view key) constTrie Put(std::string_view key, T value) constTrie Remove(std::string_view key) const
对于Get方法,比较简单,就是普通的字典树查询而已,顺着树往下走到节点处,取出值即可。
对于Put方法,相对复杂一点。假设key的长度为n,那么需要新建出n + 1个结点(包括一个新根),我的具体做法是从原始的根开始,在旧的树上沿着key的每个字符往下走,走到某个结点时,复制这个结点(包括该结点的children_指针),并修改上一个复制结点的children_(如果有上一个的话,即当前复制结点不为根)。举个例子,假设当前的字符为c,上一个复制出来的结点为A,当前复制出来的结点为

文章概述了在CMU-15445项目中实现的四个技术任务:Copy-On-WriteTrie的数据结构及其操作,使用Trie构建并发Key-ValueStore,Debugging遇到的问题及解决方案,以及SQLStringFunctions的简单实现。作者通过这些任务学习了C++编程和相关技术细节。
最低0.47元/天 解锁文章
1276





