草庐IT

c++ - 在 C++ std::unordered_map 中预分配桶

我正在使用来自gnu++0x的std::unordered_map来存储大量数据。我想为大量元素预先分配空间,因为我可以限制使用的总空间。我想做的是打电话:std::unordered_mapm;m.resize(pow(2,x));其中x是已知的。std::unordered_map不支持这个。如果可能,我宁愿使用std::unordered_map,因为它最终会成为标准的一部分。其他一些限制:需要可靠的O(1)访问和map变异。所需的散列和比较函数已经是非标准的并且有些昂贵。O(logn)突变(与std::map一样)太昂贵了。->昂贵的哈希和比较也使得基于摊销的增长方式过于昂贵。