[英]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.