【发布时间】:2011-10-13 05:37:45
【问题描述】:
我看到有人用这种结构来表示 Trie 节点:
struct trie_node_st {
int count;
struct trie_node_st *next[TREE_WIDTH];
};
Is 效率低,因为我们并不总是需要 TREE_WIDTH 作为每个数组的长度。
还是我误会了什么?
【问题讨论】:
我看到有人用这种结构来表示 Trie 节点:
struct trie_node_st {
int count;
struct trie_node_st *next[TREE_WIDTH];
};
Is 效率低,因为我们并不总是需要 TREE_WIDTH 作为每个数组的长度。
还是我误会了什么?
【问题讨论】:
这是 CPU/内存的权衡。通过预先分配它,您使用一定的最小内存量来存储这些指针 (TREE_WIDTH * sizeof (struct trie_node_st *)) 字节,稍后您将使用更少的 CPU,因为这是在编译时完成的(除非您使用 malloc( ))。但是,这几乎不是开销。即使你有很多指针,也没关系。可能的设计决策只是程序员不想在每次使用该结构时都动态分配指向 struct trie_node_st 的指针数组。
【讨论】: