本文对应 2022 年的课程,Project 0 已经更新为实现字典树了。C++17 的开发环境建议直接下载 CLion,不建议自己瞎折腾。
测试
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=DEBUG ..
$ make starter_trie_test
$ ./test/starter_trie_test
复制代码
运行上面的指令,你会得到如下输出,这不表示该项目的 5 个测试用例没过,而是没有执行。
[==========] Running 0 tests from 0 test suites.
[==========] 0 tests from 0 test suites ran. (0 ms total)
[ PASSED ] 0 tests.
YOU HAVE 5 DISABLED TESTS
复制代码
需要修改 test/primer/starter_trie_test.cpp
文件,移除测试名 DISABLED_
前缀。
// TEST(StarterTest, DISABLED_TrieNodeInsertTest)
TEST(StarterTest, TrieNodeInsertTest)
复制代码
格式化
$ make format
$ make check-lint
$ make check-clang-tidy-p0
复制代码
调试日志
LOG_INFO("# Pages: %d", num_pages);
LOG_DEBUG("Fetching page %d", page_id);
复制代码
项目介绍
使用支持并发的字典树实现一个键值存储,字典树是一种高效的排序树,用于检索指定键值。这里假设键都是非空的可变长度字符串,但事实上键可以是任意类型。
上图所示字典树中存储了:HAT、HAVE、HELLO 三个键。