map最大可以插入多少個?
如果指的是STL的 hash_map,可能要注意,在C++11里,hash_map 現(xiàn)在已經(jīng)建議用 unordered_map 替代了。其實,不光是STL,只要是Hash原理的Map可插入的容量一般都與以下幾個要素相關(guān)(借助磁盤永久化的哈希除外,它們基本沒有限制)。
1、載荷的內(nèi)存消耗。
每一條記錄的Key 均對應(yīng)了一個節(jié)點,存儲Key,Value兩個值2、哈希表的索引消耗。
包含桶地址表(往往有一定的冗余)、每個桶的鏈表。
3、其他少量中間變量和維護(hù)內(nèi)存。
因此,假設(shè)Key,value 體積的數(shù)學(xué)期望(均值)為M字節(jié),哈希表中,桶地址的冗余率期望為k(k>1),一個桶地址字節(jié)長度為B字節(jié),桶鏈表一個節(jié)點為L字節(jié),維護(hù)內(nèi)存D字節(jié),則,對已知內(nèi)存容量C,存儲的個數(shù)N的方程為N*M + (B * k ) * N + L * N + D= C=>N = (C - D) /(M + kB + L)