[問題] 有關STL map function疑問

看板C_and_CPP作者 (倒數100天)時間14年前 (2010/06/10 18:07), 編輯推噓0(0015)
留言15則, 4人參與, 最新討論串1/1
大家好 有一個C++的問題想請教版上的高手 當我使用STL map function來實作hash table looup的時候 因為使用的hash key長度為64bits,若建立完整hash table應該會把記憶體吃爆 是否有方法可以知道當下Compiler是配置多少記憶體空間來實作map function呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.215.223

06/10 18:28, , 1F
map::size, 可以知道有多少個元素
06/10 18:28, 1F

06/10 19:24, , 2F
怪怪的... 用 hash value 來當 map 的 key, 那不是
06/10 19:24, 2F

06/10 19:24, , 3F
更慢了嗎?... 不是靠 random access 的 hash table 就
06/10 19:24, 3F

06/10 19:24, , 4F
少了很大好處了吧?...
06/10 19:24, 4F

06/10 20:44, , 5F
完整的 hash table 是說你要做 2 的 64 次方 rows 的表嗎
06/10 20:44, 5F

06/10 20:44, , 6F
?如果是這樣我搞不太懂你還需要 hash 幹嘛...
06/10 20:44, 6F

06/10 22:48, , 7F
喔喔 跟樓上的大概解釋一下
06/10 22:48, 7F

06/10 22:50, , 8F
再不考慮記憶體為有限的情況下 table表的大小如t大所說的
06/10 22:50, 8F

06/10 22:51, , 9F
不過實際上本來就不可能 在實作中利用STL的map function
06/10 22:51, 9F

06/10 22:52, , 10F
Compiler會利用一定的記憶體來實作hash table lookup
06/10 22:52, 10F

06/10 22:55, , 11F
(當然背後map怎麼實作就要看Libary了)
06/10 22:55, 11F

06/10 22:56, , 12F
但至少過程應該是用時間換取空間來達到實作結果
06/10 22:56, 12F

06/10 22:56, , 13F
我目前想知道的就是 有沒有辦法知道當下使用map function
06/10 22:56, 13F

06/10 22:57, , 14F
是增加多少額外的記憶體空間 我目前想知道的是這個
06/10 22:57, 14F

06/10 22:57, , 15F
謝謝大家~
06/10 22:57, 15F
文章代碼(AID): #1C4Bbw8F (C_and_CPP)