Quelle est la syntaxe à utiliser :: piscine allocateur boost avec boost :: unordered_map?

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

  •  21-08-2019
  •  | 
  •  

Question

Je suis juste expérimenter avec boost :: piscine pour voir si son plus rapide allocateur pour des trucs, je travaille avec, mais je ne peux pas comprendre comment l'utiliser avec boost :: unordered_map:

Voici un extrait de code:

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

Voici l'erreur de compilation que je reçois:

Erreur 3 Erreur C2064: terme ne pas prendre une fonction 2 arguments C: \ Program Files (x86) \ boost \ boost_1_38 \ boost \ non ordonnée \ détail \ hash_table_impl.hpp 2048

Si je commente sur l'utilisation de la carte, par exemple "TheMap [1] = 2", puis l'erreur de compilation va.

Était-ce utile?

La solution

Il semble que vous manque 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> > > 

Le quatrième paramètre est le prédicat de comparaison, le cinquième est l'allocateur.

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

En outre, mais probablement pas la cause de votre problème, vous devez séparer les deux « > » à la fin du modèle instanciation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top