我看到有些人将此结构用于Trie节点:
struct trie_node_st {
int count;
struct trie_node_st *next[TREE_WIDTH];
};
效率很低,因为我们并不总是需要TREE_WIDTH
作为每个数组的长度。
或者我误解了什么?
答案 0 :(得分:4)
这是一个CPU /内存权衡。通过预先分配它,你可以使用一定的最小内存来存储这些指针(TREE_WIDTH * sizeof(struct trie_node_st *))字节,之后使用较少的CPU,因为这是在编译时完成的(除非你用malloc分配结构) ))。但是,这几乎不是开销。即使你有很多指针,也没关系。可能的设计决定只是程序员不想每次使用这个结构时都必须动态地分配一个指向struct trie_node_st的指针数组。