Какой синтаксис для использования boost :: pool_allocator с boost :: unordered_map? - PullRequest
3 голосов
/ 30 июня 2009

Я просто экспериментирую с boost :: pool, чтобы увидеть, является ли он более быстрым распределителем для вещей, с которыми я работаю, но я не могу понять, как использовать его с boost :: unordered_map:

Вот фрагмент кода:

unordered_map<int,int,boost::hash<int>, fast_pool_allocator<int>> theMap;   
theMap[1] = 2;

Вот ошибка компиляции, которую я получаю:

Ошибка 3, ошибка C2064: термин не соответствует функции, принимающей 2 аргумента C: \ Program Files (x86) \ boost \ boost_1_38 \ boost \ unordered \ detail \ hash_table_impl.hpp 2048

Если я закомментирую использование карты, например, «theMap [1] = 2», то ошибка компиляции исчезает.

1 Ответ

7 голосов
/ 30 июня 2009

Похоже, вам не хватает параметра шаблона .

template<typename Key, typename Mapped, typename Hash = boost::hash<Key>, 
     typename Pred = std::equal_to<Key>, 
     typename Alloc = std::allocator<std::pair<Key const, Mapped> > > 

Четвертый параметр - предикат для сравнения, пятый - распределитель.

unordered_map<int, int, boost::hash<int>,
     std::equal_to<int>, fast_pool_allocator<int> > theMap;

Кроме того, но, вероятно, не причина вашей проблемы, вам нужно разделить два «>» в ​​конце создания шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...