我正在使用來自gnu ++ 0x的unordered_map來存儲大量數據。我想爲大量元素預先分配空間,因爲我可以限制使用的總空間。在C++中預分配桶unordered_map
我想什麼能夠做的就是調用:
std::unordered_map m;
m.resize(pow(2,x));
其中x是已知的。
unordered_map不支持此操作。如果可能,我寧願使用unordered_map,因爲它最終將成爲標準的一部分。
一些其他方面的限制:
需要可靠的O(1)訪問和地圖的突變。所需的散列和比較函數已經非標準化並且有些昂貴。 O(log n)突變(與std :: map一樣)太昂貴了。
- >昂貴的散列和比較也使基於攤銷的增長方式太昂貴。每個額外的插入操作都需要這些函數的O(n)操作,因爲指數存儲需求需要O(n)個增長,所以算法的運行時間會產生額外的二次項。
您正在使用的暗示,彷彿是在: 迭代器的std ::設置::插入(迭代器提示,常量VALUE_TYPE和值); http://en.cppreference.com/w/cpp/container/set/insert,看起來言語不當。 – 2017-07-19 03:48:27