Qual è la sintassi da utilizzare boost :: piscina allocatore con boost :: unordered_map?

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

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

È stato utile?

Soluzione

Sembra che vi manca un .

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top