第 0 个 Project 名为 C++ Primer,目标是实现一个字典树(Trie),内容不难,主要是测试参与者的 Modern C++ 编程水平,对于选课的 CMU 学生如果感觉比较吃力可能就要劝退了。
Project 说明:Project #0 - C++ Primer
本节要实现的内容全部在 src/include/primer/p0_trie.h 文件中。
字典树(Trie)是一种有序的树形结构,能够存储键值对并高效地进行前缀匹配,详细介绍可以自行百度。例如插入两个键值对 ("ab", 1) 和 ("ac", "val"),则形成下图的结构:

root 是根节点,不存储键;a 是一个非终结节点,只存储键;下层的两个节点是终结节点,除了键还要存储一个任意类型的值。每个节点有一个 map 存储以每个子节点的键索引的子节点。本节相应做出了如下设计:

TrieNode 表示非终结节点,成员为键,是否是终结节点的标记,子节点 map。TrieNodeWithValue 继承前者,表示终结节点,带有一个 T 类型的 value。二者可以通过 TrieNode 类中 is_end_ 标识区分。Trie<

最低0.47元/天 解锁文章
3725





