sadece taşınabilir ve etkili yöntemdir hesaplamak şudur: (sadece resimde, bunu yapmayın) std::unordered_map::bucket_count()
yoluyla bölüm sayısını almak ve karma nesnesinde saklayabilirsiniz söyledi
std :: size_t aralığından olabildiğince eşit dağıtılan karmalar. Belirli bir anahtar için, karma işlevinin, programın süresi boyunca aynı karma kodunu döndürmesi önemlidir. Sırasız harita arttıkça, kendini yeniden şekillendirecektir. Anahtarlar değiştirilemediğinden, yeni kepçelerin hesaplanması için yeni kepçe sayımının anahtarlara iletilmesi mümkün olmayacaktır (ki bu durumda her durumda haritada modüle tabi olacaktır).
ileri giderek:
(örneğin, referanslar veya değişken veri üyeleri aracılığıyla) tuşuna bir kova sayımını iletişim Aradığınız sadece gözyaşları içinde sona erecek ve bir hata olacaktır.
Bir sorun bu çift haritası sınıfına bu tuş sınıf olur o - o bunu Rehash üzere olduğunu uyarmaya ile
hala
kötüsü, sırasız haritası iletişim kurmaz ... yeterince kötü ama . Bir öğeyi ekledikten sonra bunu keşfetmeniz gerekir. Bu, haritadaki tüm öğelerin artık eski bir kova sayısına bağlı olarak karma olduğunu gösterir. Haritaya çoğaltmayı denemek, büyük olasılıkla haritanın semantiğini bozarak işe yarıyor!
Bunu yapmak için, her ekleme işleminden sonra, tüm öğeleri bir vektör içine almanız gerekir, bunların karmalarını yeniden hesaplayın ve sonra yeniden takın.
Horrific !!!
Lütfen bana, sizi bu kıyamet yolunda yürümemeye ikna ettiğimi söyleyin.
['std :: cbrt (b)'] (http://en.cppreference.com/w/cpp/numeric/math/cbrt), pow'den daha doğru ve daha hızlıdır (b, (1.0/0) –
Çok iyi okunabilir, teşekkürler! – SchrodingersCat