论文“The Adaptive Radix Tree”的代码实现。算法实现了ART文章中提到的路径压缩和懒扩展方法,还有插入关键字、查看ART树中已有的关键字总数、查找某个关键字、删除关键字、查找包含某个前缀的关键字等方法。
2022-06-17 20:17:17 41KB 自适应前缀树
1
解散 介绍 Unodb是一种自适应的基数树实现,在我的操场上完成了各种C ++工具和构想。 我试图描述从中学到的一些知识。 要求 该代码使用SSE4.1内部函数(Nehalem和更高版本)。 这与仅需要SSE2的原始ART纸相反。 注意:由于这是我的个人项目,因此仅支持GCC 10和LLVM 11编译器。 如果您想尝试此操作并需要较低的受支持的编译器版本,请给我留言。 用法 所有声明都存在于unodb命名空间中,在以下内容unodb其省略。 当前唯一支持的密钥类型是std::uint64_t ,别名为key 。 但是,通过用所需的密钥类型实例化art_key类型并根据ART论文对art_key::make_binary_comparable进行特殊化,添加新的密钥类型应该相对容易。 值不透明地处理。 它们作为value_view非所有者对象value_view ,该对象是gsl::s
1