如何在C ++中实现减少内存使用的Trie?

时间:2019-06-29 03:23:19

标签: c++ memory-management trie low-memory

我需要实现一个trie结构,以存储大约30k字符串。 现在,特里结构看起来像这样

struct TrieNode {
        bool isWord=false;
        struct TrieNode* children[256];
};

对于每个节点,由于固定大小的数组,我分配了太多的空间,因此由于占用大量内存,我的程序崩溃了。 对于这个问题,我无法使用地图,这是我到目前为止找到的唯一解决方案。还有其他提示吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

使用std::unordered_map<char, TrieNode>而不是TrieNode *数组。

如果您需要对子级进行排序,请使用std::map<char, TrieNode>

如果不允许使用STL,请自己实现哈希图或平衡的二叉树类。