из 1 мил элементов. «Вы можете зарезервировать самый большой контейнер, который может когда-либо существовать» - это еще один момент, который я не считаю разумным советом в контексте этого вопроса.

ользуюstd::unordered_map из gnu ++ 0x хранить огромное количество данных. Я хочу заранее выделить место для большого количества элементов, поскольку я могу ограничить общее использованное пространство.

То, что я хотел бы сделать, это позвонить:

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

где х известен.

std::unordered_map не поддерживает это Я бы предпочел использоватьstd::unordered_map если возможно, так как это в конечном итоге будет частью стандарта.

Некоторые другие ограничения:

Нужен надежный O (1) доступ и мутация карты. Требуемые хеш-функции и функции сравнения уже нестандартны и несколько дороги. O (log n) мутация (как сstd::map) это слишком дорого.

-> Дорогой хэш и сравнение также делают слишком дорогой рост на основе амортизации. Каждая дополнительная вставка требует O (n) операций из этих функций, что приводит к дополнительному квадратичному члену во время выполнения алгоритма, поскольку экспоненциальные требования к памяти требуют O (n) роста.