2012-05-16 51 views
2

對於我的下一個任務,我需要使用一個非常大的散列;因爲我有一箇舊的編譯器,我不能使用C++ 0x std::unordered_map。理想情況下,我需要致電reserve爲大量物品提前騰出空間。我在boost::unordered_map找不到這個方法:是否有任何地方或功能達到相同?boost :: unordered_map缺少reserve()像std :: unordered_map

2個關聯容器是相同的;我可以看到rehash函數和相同的構造函數來控制桶的數量,但不是關於許多元素的函數。

你能幫我嗎?

回答

6

reserve可以通過rehash進行仿真,如N3376中的表103所示。

a.rehash(n) 
Post: a.bucket_count() > a.size()/a.max_load_factor() 
     and a.bucket_count() >= n. 

a.reserve(n) Same as a.rehash(ceil(n/a.max_load_factor())) 
+0

@ pmr:謝謝你的回覆!我打算使用循環插入空數據,但我有太多的想法考慮這種方法!!:D –

+0

@AbruzzoForteeGentile另請參閱:https://svn.boost.org/trac/boost/ticket/6857 – pmr

+0

呃..eh ..確實是個好消息! –

相關問題