I.刚刚实现了一种按位trie(基于nedtries),但我的
代码做了很多
内存分配(对于每个节点).
与我的实施相反,在其他事物中,nedtries声称速度很快,
因为它们的内存分配
数量很少(如果有的话).
作者声称他的实施是“就地”的,但在这种情况下它的真正含义是什么?
nedtries如何实现如此少量的动态内存分配?
Ps:我知道源代码可用,但代码很难遵循,我无法弄清楚它是如何工作的
我看了一下nedtrie.h源
代码.
它似乎是“就地”的原因是你必须将trie簿记数据
添加到你想要存储的项目中.
您使用NEDTRIE_ENTRY宏将父/子/下一个/上一个链接添加到您的数据结构,然后您可以将该数据结构传递给各种trie例程,这些例程将提取并使用这些添加的成员.
因此,它是“就地”的,因为您可以扩充现有的数据结构和trie代码.
至少那是它的样子.该代码中有很多宏观优点,所以我可能会让自己感到困惑(: