¿Cuál es la sintaxis para impulsar el uso :: asignador piscina con impulso :: unordered_map?
-
21-08-2019 - |
Pregunta
Estoy experimentando con impulso :: piscina para ver si es un asignador más rápido para cosas que estoy trabajando con, pero no puedo encontrar la manera de usarlo con el impulso :: unordered_map:
Este es un fragmento de código:
unordered_map<int,int,boost::hash<int>, fast_pool_allocator<int>> theMap;
theMap[1] = 2;
Aquí está el error de compilación consigo:
Error 3 Error C2064: término no se evalúa como una función de tomar 2 argumentos C: \ Archivos de programa (x86) \ impulso \ boost_1_38 \ impulso \ desordenada \ detalle \ hash_table_impl.hpp 2048
Si comento hacia fuera el uso del mapa, por ejemplo, "TheMap [1] = 2", entonces el error de compilación desaparece.
Solución
Parece que se echa en falta un parámetro de plantilla rel="noreferrer"> .
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> > >
El cuarto parámetro es el predicado de comparación, el quinto es el asignador.
unordered_map<int, int, boost::hash<int>,
std::equal_to<int>, fast_pool_allocator<int> > theMap;
También, pero probablemente no sea la causa del problema, es necesario separar los dos '>' al final de la creación de instancias de plantilla.