Я использую unordered_map из gnu ++ 0x для хранения огромного количества данных. Я хочу предварительно выделить пространство для большого количества элементов, так как я могу связать используемое общее пространство.Предварительно выделяющие ведра в C++ unordered_map
То, что я хотел бы быть в состоянии сделать это вызов:
std::unordered_map m;
m.resize(pow(2,x));
где х известно.
unordered_map не поддерживает это. Я предпочел бы использовать unordered_map, если это возможно, так как он в конечном итоге станет частью стандарта.
Некоторые другие ограничения:
нужны надежные O (1) доступ и мутацию карте. Желаемые функции хэша и сравнения уже нестандартны и несколько дороги. O (log n) (как и для std :: map) слишком дорого.
-> Дорогие хеш и сравнение также делают слишком дорогой рост на основе амортизации. Каждая дополнительная вставка требует O (n) операций от этих функций, что приводит к дополнительному квадратичному члену во время выполнения алгоритма, поскольку требования к экспоненциальному хранению требуют O (n) роста.
Вы используете подсказку, как если бы она находилась в: итератор std :: set :: insert (iterator hint, const value_type & value); http://en.cppreference.com/w/cpp/container/set/insert, выглядит неправильно. –