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

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

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 为单位的字节流也可以正常运作。