2012-05-16 1 views
2

Pour ma prochaine tâche, je dois utiliser un très gros hash; depuis que j'ai un ancien compilateur je ne peux pas utiliser C++ 0x std::unordered_map. Idéalement, j'ai besoin d'un appel à reserve pour faire de la place à l'avance pour un grand nombre d'articles. Je ne trouve pas cette méthode dans boost::unordered_map: y a-t-il un lieu ou une fonction qui réalise la même chose?boost :: unordered_map manquant reserve() comme std :: unordered_map

Les 2 conteneurs associatifs sont identiques; Je peux voir rehash fonction et le même constructeur pour contrôler le nombre de compartiments, mais pas une fonction sur un certain nombre d'éléments.

Pouvez-vous m'aider avec ça?

Répondre

6

reserve peut être émulé par rehash comme dans le tableau 103 dans N3376.

a.rehash(n) 
Post: a.bucket_count() > a.size()/a.max_load_factor() 
     and a.bucket_count() >= n. 

a.reserve(n) Same as a.rehash(ceil(n/a.max_load_factor())) 
+0

@ pmr: merci pour votre réponse !! J'allais utiliser un cycle pour insérer des données vides mais j'avais trop de luaghs en pensant à cette méthode !!: D –

+0

@AbruzzoForteeGentile Voir aussi: https://svn.boost.org/trac/boost/ticket/6857 – pmr

+0

hein ..eh .. très bonnes nouvelles en effet! –

Questions connexes