2011-11-08 33 views
1

如果您想要爲鍵存儲多個值,那麼始終可能會在散列表和值之間打包列表。然而,我認爲效率相當低,因爲:C本地支持每個鍵多個值的散列表庫

散列表必須解決衝突,無論如何,某些類型的列表散步也是如此。當它發現與查詢關鍵字匹配的存儲桶中的第一個關鍵字時,它可能會繼續走過存儲區,而不是在跟隨另一個間接關係之後繼續走另一個列表,從而獲得更好的緩存性能。

是否有人知道默認支持這種庫的實現(並且理想情況下也是閃亮,快速,散列表以及BSD或類似許可的)?我已經瀏覽了一些圖書館,但沒有做我想要的,glib的datasets接近最近,雖然存儲記錄,而不是列表。

+1

當然,就緩存性能而言,單跳鏈表與跳到新列表是一樣的嗎?在這兩種情況下,你都只是跟隨指針。 –

+0

這個存儲桶有一個公平的機會已經在緩存中,一個單獨的列表不是很多。整個事情當然取決於實施,在桶本身僅僅是一個鏈表的情況下,你是完全正確的。 – barsoap

+0

快速的谷歌給了我這個:http://uthash.sourceforge.net/ – Wolph

回答

1

那麼...就像是multimap

Libgee,大廈關閉GLib,提供了一個MultiMap。 (它是用Vala編寫的,但是它被轉換爲普通的C.)

+0

從語義上來說,是的,在操作上,libgee在哈希表和值之間包含一個列表,如abstractmultimap.vala中顯而易見: – barsoap

相關問題