gpt4 book ai didi

c++ - 使用 map 的 Trie 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:01 24 4
gpt4 key购买 nike

实现 Trie 数据结构的简单方法是使用 std::map<char,*NodeTrie> .如果我使用它会发生什么错误。我需要序列化和反序列化 Trie。所以节点中的每个映射都是AVL树。也许我会有开销?但是在 map 中我可以更快地搜索,如果我使用列表。

template < typename T >
struct NodeTrie{
std::map<char,*NodeTrie>`
bool isWord;
T & val;
};

最佳答案

我喜欢你的想法。尝试是重要的数据结构,我对 map<> 作为高效容器有愉快的体验。

只是一些评论:如果您的编译器支持它,您可以通过为每个节点单独分配来避免浪费内存。

template< typename T >
struct NodeTrie {
NodeTrie(const T& val = T(), bool isWord = bool() ) : val(val), isWord(isWord) {}

std::map<char, NodeTrie> span;
T val;
bool isWord;
};

这样使用:

int main() {
typedef NodeTrie<int> iTree;
iTree t(0);
t.span['a'] = iTree(3);
...
}

我还更改了 val 成员为可复制构造对象:在这里使用引用对我来说似乎是错误的设计...

关于c++ - 使用 map 的 Trie 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18537777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com