如何在 C++ 中实现减少内存使用量的 Trie?
How to implement Trie with reduced memory usage in C++?
我需要实现一个 trie 结构,以存储大约 30k 个字符串。
现在,trie 结构看起来像这样
struct TrieNode {
bool isWord=false;
struct TrieNode* children[256];
};
由于固定大小的数组,我为每个节点分配了太多space,所以我的程序因大量内存使用而崩溃。
对于这个问题,我不能使用地图,这是迄今为止我找到的唯一解决方案。有人有其他建议吗?
谢谢。
使用 std::unordered_map<char, TrieNode>
代替 TrieNode *
数组。
如果需要 children 排序,请使用 std::map<char, TrieNode>
。
如果您不允许使用 STL,请自己实现哈希图或平衡二叉树class。
我需要实现一个 trie 结构,以存储大约 30k 个字符串。 现在,trie 结构看起来像这样
struct TrieNode {
bool isWord=false;
struct TrieNode* children[256];
};
由于固定大小的数组,我为每个节点分配了太多space,所以我的程序因大量内存使用而崩溃。 对于这个问题,我不能使用地图,这是迄今为止我找到的唯一解决方案。有人有其他建议吗?
谢谢。
使用 std::unordered_map<char, TrieNode>
代替 TrieNode *
数组。
如果需要 children 排序,请使用 std::map<char, TrieNode>
。
如果您不允许使用 STL,请自己实现哈希图或平衡二叉树class。