boost::unordered_map отсутствует в резерве(), как std::unordered_map

Для моей следующей задачи мне нужно использовать очень большой хэш; так как у меня старый компилятор, я не могу использовать C++0x std::unordered_map. В идеале мне нужен вызов reserve, чтобы заранее освободить место для большого количества предметов. Я не могу найти этот метод в boost::unordered_map: есть ли место или функция, которая достигает того же?

2 ассоциативных контейнера одинаковы; Я вижу функцию rehash и тот же конструктор для управления количеством бакетов, но не функцию о количестве элементов.

Вы можете помочь мне с этим?


person Abruzzo Forte e Gentile    schedule 16.05.2012    source источник


Ответы (1)


reserve можно эмулировать с помощью rehash, как показано в таблице 103 в N3376.

a.rehash(n) 
Post: a.bucket_count() > a.size() / a.max_load_factor() 
      and a.bucket_count() >= n.

a.reserve(n) Same as a.rehash(ceil(n / a.max_load_factor()))
person pmr    schedule 16.05.2012
comment
@pmr: спасибо за ответ!! Я собирался использовать цикл for для вставки пустых данных, но у меня было слишком много смеха, думая об этом методе!!: D - person Abruzzo Forte e Gentile; 16.05.2012