Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基数树(Patricia Trie)是移动电话通讯簿的有效数据结构吗 我一直在考虑用C++实现地址簿。由于它是为移动应用程序开发的,通讯簿应该使用尽可能少的内存,而且用户应该仍然能够按姓名快速搜索或排序联系人(我知道)_C++_Addressbook_Trie - Fatal编程技术网

基数树(Patricia Trie)是移动电话通讯簿的有效数据结构吗 我一直在考虑用C++实现地址簿。由于它是为移动应用程序开发的,通讯簿应该使用尽可能少的内存,而且用户应该仍然能够按姓名快速搜索或排序联系人(我知道)

基数树(Patricia Trie)是移动电话通讯簿的有效数据结构吗 我一直在考虑用C++实现地址簿。由于它是为移动应用程序开发的,通讯簿应该使用尽可能少的内存,而且用户应该仍然能够按姓名快速搜索或排序联系人(我知道),c++,addressbook,trie,C++,Addressbook,Trie,在我做了一些研究之后,我发现大多数人都认为tp是最适合我需要的数据结构。更确切地说是一个(帕特里夏·特里亚)。使用此数据结构也将有助于实现自动完成 还有其他可行的解决方案吗?或者如果我开始使用这种想法编码,可以吗?尝试是最好的选择,因为它们提供快速搜索、插入和删除功能。尝试是最好的选择,因为它们提供快速搜索、插入和删除功能。小心小收藏的尝试。虽然它们确实提供了良好的渐近行为,但它们在时间和空间上的隐藏常数可能太大 特别是,尝试往往具有较差的缓存性能,这应该是小型集合的主要关注点 假设您的数据相对

在我做了一些研究之后,我发现大多数人都认为tp是最适合我需要的数据结构。更确切地说是一个(帕特里夏·特里亚)。使用此数据结构也将有助于实现自动完成


还有其他可行的解决方案吗?或者如果我开始使用这种想法编码,可以吗?

尝试是最好的选择,因为它们提供快速搜索、插入和删除功能。

尝试是最好的选择,因为它们提供快速搜索、插入和删除功能。

小心小收藏的尝试。虽然它们确实提供了良好的渐近行为,但它们在时间和空间上的隐藏常数可能太大

特别是,尝试往往具有较差的缓存性能,这应该是小型集合的主要关注点


假设您的数据相对较小[注意尝试小集合。尽管它们确实提供了良好的渐近行为,但它们在时间和空间上的隐藏常数可能太大

特别是,尝试往往具有较差的缓存性能,这应该是小型集合的主要关注点


假设您的数据相对较小[关于我们在这里谈论的条目数量?移动设备的速度有多快?是否真的值得实施复杂的数据结构?正常的通讯簿大小。我想没有人会拥有超过5000个联系人(最多)我们在这里谈论的是多少条目?移动设备的速度有多快?它真的值得实现一个复杂的数据结构吗?正常的通讯簿大小。我想没有人会拥有超过5000个联系人(最多)向量上的二进制搜索对于缓存命中率是否一定比trie更糟糕?@OliCharlesworth:我相信是的,假设集合很小,它[
vecotr
]可能实际上适合缓存。尝试[甚至是基数尝试]往往会有很多开销,因此更可能“溢出”缓存。对于小集合,这种差异可能比渐近行为更为显著。这正是我所担心的,Trie上的额外开销。现在您已经指出缓存可能会有巨大的差异(不知道为什么我没有想到这一点)我对这个问题的看法完全不同。@QtLearner:您的想法非常正确,这是我给您的建议,适用于大型集合。但是,对于小型集合,渐近行为通常不是问题所在,常量因素[而且缓存性能也很差]最有可能产生更大的影响。在向量上进行二进制搜索是否必然比在trie上导航更不利于缓存命中?@OliCharlesworth:我相信是的,假设集合很小,它[
vecotr
]实际上可能适合缓存。trys[甚至是radix trys]倾向于有很多开销,因此更可能“溢出”缓存。对于小集合,这种差异可能比渐进行为更显著。这正是我所担心的,Trie上的额外开销。现在您已经指出缓存可能有巨大的差异(不知道为什么我没有想到这一点)我对这个问题的看法完全不同。@QtLearner:你的想法非常正确,这是我给你的建议,对于大型集合。但是,对于小型集合,渐近行为通常不是问题,而是常数因素[而且糟糕的缓存性能也是如此]最有可能产生更大的影响。