Каков синтаксис использования boost::pool_allocator с boost::unordered_map?

StackOverflow https://stackoverflow.com/questions/1061543

  •  21-08-2019
  •  | 
  •  

Вопрос

Я просто экспериментирую с 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», тогда ошибка компиляции исчезнет.

Это было полезно?

Решение

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

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;

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top