Qual è la sintassi da utilizzare boost :: piscina allocatore con boost :: unordered_map?
-
21-08-2019 - |
Domanda
Sono solo sperimentando con boost :: piscina per vedere se un allocatore più veloce per le cose che sto lavorando con, ma io non riesco a capire come usarlo con boost :: unordered_map:
Ecco un frammento di codice:
unordered_map<int,int,boost::hash<int>, fast_pool_allocator<int>> theMap;
theMap[1] = 2;
Ecco l'errore di compilazione ottengo:
Errore 3 Errore C2064: Il termino non restituisce una funzione di prendere 2 argomenti C: \ Program Files (x86) \ spinta \ boost_1_38 \ spinta \ ordinata \ dettagli \ hash_table_impl.hpp 2048
Se io commento l'uso della carta, ad esempio, "TheMap [1] = 2", quindi l'errore di compilazione va via.
Soluzione
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> > >
Il quarto parametro è il predicato per il confronto, la quinta è l'allocatore.
unordered_map<int, int, boost::hash<int>,
std::equal_to<int>, fast_pool_allocator<int> > theMap;
Inoltre, ma probabilmente non la causa del problema, è necessario separare i due '>' alla fine del modello di istanza.