2012-05-16 2 views
2

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

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

Можете ли вы мне помочь?

ответ

6

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())) 
+0

@ pmr: спасибо за ваш отзыв !! Я собирался использовать для цикла, вводя пустые данные, но у меня было слишком много luaghs, думающих об этом методе !!: D –

+0

@AbruzzoForteeGentile См. Также: https://svn.boost.org/trac/boost/ticket/6857 – pmr

+0

eh .. действительно хорошая новость! –