[英]Which is the best data structure to store 1 key and 2 values in c++
[英]Best Data structure to store and search phrases in C++
我使用trys数据结构存储单词。 现在,我有一个要求,即在给定的段落中查找同一段落中是否存在某些短语。
这样做最有效的方法是什么? 短语总数不超过100。
如果我是你,我会先使用boost :: multi_index_container来组合一些东西,因为那样的话,如果以后获得更多需求,将很容易进行进一步扩展。 如果以后您测量并发现它的性能不足,则可以用优化的数据结构替换它。
指定的特里在许多方面都不理想。
ALPHABET_SIZE
,则会ALPHABET_SIZE
侮辱性伤害; 一个五十字节的短语不仅需要五十个节点,而且每个节点的大小可能超过一百个字节……使用该代码,长度为五十个字节的每个项目或“短语”可能最多需要约5KB的存储空间! 这还不是最坏的情况。 malloc
,因此很难进行优化。 每个节点都是其自己的分配,这使得insert
非常malloc
-heavy。 分配细节应与数据结构处理分开,如果不是出于优化目的,则是为了简化使用。 大量使用此代码的程序很可能会遇到与内存碎片和/或高速缓存未命中有关的性能问题,除了用trie代替其他东西外,看不到任何简单或重大的优化。 <sarcasm>
吧? </sarcasm>
我已经编写了PATRICIA trie实现,该实现每个项目仅使用一个节点,字母大小为2(它使用每个字符的位,而不是每个字符),并允许您使用任何希望的分配... a,我在重构接口方面还没有付出很大的努力,但是它应该非常接近最优。 您可以在此处找到该实现。 您可以在patricia_test.c测试用例文件中看到插入(使用patricia_add
),检索(使用patricia_get
)和删除(使用patricia_remove
)的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.