C++ 无序字典树,字典树提供索引,值节点通过双向链表相连。目标替换 string 为键的 unordered_map ,并提供特定前缀子集的获取以解决多个并列 string 为键的 unordered_map。

ToiletMaster 30b7b76414 添加 "随机key例子和有序key例子" 10 月之前
example 30b7b76414 添加 "随机key例子和有序key例子" 10 月之前
.gitignore 8c7ca5e00b 初始化仓库 10 月之前
README.md 16b82546af 更新 README.md 10 月之前
list.h 4d2481ca35 添加删除方法erase, 修改文件类型名 10 月之前
list.inl 4d2481ca35 添加删除方法erase, 修改文件类型名 10 月之前
tire.h aea023a3f3 添加 "前缀子树获取方法" 10 月之前
tire.inl aea023a3f3 添加 "前缀子树获取方法" 10 月之前

README.md

C++ 无序字典树,字典树提供索引,值节点通过双向链表相连。

描述

目标:

  1. 替换 unordered_map。
  2. 获取特定前缀的子集合。
  3. 使用接近 STL 库。
  4. 优秀的查找速度。
  5. 尽可能少的内存占用。
  6. 迭代器:

    1. 迭代器快速遍历,但无法拿到 Key。
    2. 树迭代器遍历字典树,可以拿到 Key。

    思路

    时间

    1. 字典树提供索引功能.
    2. 通过位图 bitmap 优化后继节点的析构。

    空间

    1. 在认识字典树的前提下, 通过 "2^8=2^4*2^4" 优化后继节点的数量。将 8 比特拆分为两个 4 比特,使得 (256个指针+其它部分) 变成 (16个指针+其它部分)*2。如果将字符流认作 8bits 为单位的字节流也可以正常运作。