2013-04-05 27 views
9

有誰知道C/C++哈希表/地圖實現不是動態分配內存?我正在研究沒有標準庫的嵌入式系統&沒有堆(除非我想寫/端口一個)。沒有動態分配的哈希表/地圖實現

+0

找到一個嵌入式堆分配實現比沒有動態內存分配的散列/映射更容易嗎? – dtech 2013-04-05 20:48:32

+0

如果您始終可以按照與其分配完全相反的順序釋放分配的內存(例如'alloc a,b,c','free c,b,a'),則您的內存/堆管理器可以像幾個數十行代碼實現了堆棧數據結構。 – 2013-04-06 00:06:46

+0

它可以更容易地實現堆,但如果這是我需要的唯一的東西,它可能不是。而堆棧內存存儲意味着我將無法刪除無序的項目,這可能是一個問題。 – 2013-04-06 10:40:28

回答

6

您正在尋找的術語是「Open addressing」或「closed hashing」。 請參閱http://en.wikibooks.org/wiki/Data_Structures/Hash_Tables#Open_addressinghttp://en.wikipedia.org/wiki/Open_addressing

雖然不知道具體的實現方法。抱歉。

+0

雖然有很好的聯繫,但它們可能會有幫助。 – 2013-04-06 10:38:52

+0

實際上,那篇文章中的漂亮圖片讓我意識到,如果我從一組節點(可能只是一個靜態數組)實現了一個freelist,我也可以進行鏈接。但我喜歡線性探測開放尋址的高速緩存一致性。 – 2013-04-06 10:49:35