Я использую unordered_map из gnu ++ 0x для хранения огромного количества данных. Я хочу предварительно выделить пространство для большого количества элементов, так как я могу связать используемое общее пространство.
То, что я хотел бы сделать, это позвонить:
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) роста.