Pergunta

Eu só estou experimentando com boost :: piscina para ver se o seu mais rápido alocador de coisas que eu estou trabalhando com, mas eu não posso descobrir como usá-lo com boost :: unordered_map:

Aqui está um trecho de código:

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

Aqui está o erro de compilação que eu recebo:

Erro 3 Erro C2064: termo não avalia a uma função de tomar 2 argumentos C: \ Program Files (x86) \ boost \ boost_1_38 \ boost \ desordenada \ detalhe \ hash_table_impl.hpp 2048

Se eu comentar o uso do mapa, por exemplo, "TheMap [1] = 2", em seguida, o erro de compilação vai embora.

Foi útil?

Solução

Parece que você está faltando um modelo parâmetro .

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> > > 

O quarto parâmetro é o predicado de comparação, o quinto é o alocador.

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

Além disso, mas provavelmente não a causa do seu problema, você precisa separar os dois '>' no final da instanciação de modelo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top