Pré-alocando buckets em um C ++ std :: unordered_map

Estou usando ostd::unordered_map do gnu ++ 0x para armazenar uma enorme quantidade de dados. Quero pré-alocar espaço para o grande número de elementos, pois posso vincular o espaço total usad

O que eu gostaria de poder fazer é ligar para:

std::unordered_map m;
m.resize(pow(2,x));

onde x é conhecido.

std::unordered_map não suporta isso. Eu prefiro usarstd::unordered_map se possível, uma vez que fará parte do padrã

Algumas outras restrições:

Precisa de acesso O (1) confiável e mutação do mapa. As funções de hash e comparação desejadas já não são padrão e são caras. Mutação O (log n) (como emstd::map) está muito caro

-> O hash caro e a comparação também tornam o crescimento baseado em amortização muito caro. Cada inserção extra requer operações O (n) dessas funções, o que resulta em um termo quadrático extra no tempo de execução do algoritmo, pois os requisitos de armazenamento exponencial precisam de crescimentos O (n).

questionAnswers(5)

yourAnswerToTheQuestion