Önemsiz anahtarları durumunda unordered_map Haritayı kullanarak herhangi bir avantajı var mı?
C unordered_map
hakkında son bir konuşma olmadığını fark etmemi sağladı, map
önce, arama verimliliği nedeniyle kullandığım yer çoğu için unordered_map
kullanacağım (itfa edilmiş O(1)vsO(log n)). Çoğu kez kullandığım bir harita kullanabilirsiniz int
'nin veya anahtarları, dolayısıyla karma işlevi tanımı ile herhangi bir sorun var gibi std::strings
. Daha fazla düşünmedim değil, daha geldiğim için fark bulamıyorum bir sebep kullanarak bir std::map
diye basit türleri üzerinde unordered_map
-- baktım arabirimleri ve bulamadınız önemli farklılıklar bu etki benim kod.
Dolayısıyla soru - herhangi bir gerçek nedeni int
std::string
gibi basit türler halinde unordered map
std::map
var mı acaba?
Tam olarak standart değildir ve taşıma ile ilgili sorunlar neden olabilir biliyorum view-kesinlikle bir programlama noktasından soruyorum.
Ayrıca doğru cevapların biri olabileceğini umuyorum< . em ^"daha küçük veri setleri için daha iyi olur"küçük bir havai (doğru mu?) anahtarları miktarı önemsiz olmayan durumlar için soru kısıtlamak istiyorum bu yüzden -- (>1 024).
Düzenleme:yaa, bariz (teşekkürler GMan!) unuttum - Evet, göster dersin biliyorum ... sıralanır ve başka nedenler arıyorum.
CEVAP
map
'elemanları sipariş s devam et. unutma Eğer PES edersen, açıkçası unordered_map
kullanamazsınız.
Akılda tutulması gereken başka bir şey unordered_map
'ler genellikle daha fazla bellek kullanır. map
her nesne için Doberman sonra birkaç işaretçiler bir hafızası vardır. Aksine, unordered_map
'büyük bir dizi (bu bazı uygulamalarda oldukça büyük alabilirsiniz ve her nesne için ek bellek o zaman s. Eğer hafıza-dikkat etmeniz gerekiyorsa, map
büyük dizi yok, çünkü daha iyi olduğunu kanıtlamak gerekir.
Eğer arama-kurtarma saf değilse, unordered_map
yol olduğunu söyleyebilirim. Ama her zaman bir denge vardır, ve eğer onları gelemez mi, o zaman kullanamazsın.
Kişisel deneyimlerinden, unordered_map
yerine ana bir varlık map
-bak şurada bir tablo kullanırken performansında ciddi bir iyileşme (tabii ölçülen) buldum.
Diğer taraftan, sürekli ve öğeleri ekleme kaldırma çok daha yavaş olduğunu buldum. Elementlerin nispeten statik bir koleksiyon için harika bir şey, ama eğer eklemeler ve silmeler ton yapıyorsan karma bucketing kadar eklemek gibi görünüyor. (Not, Bu fazla yineleme sona erdi.)
Herhangi bir pythonic yol iki dicts (h...
Herhangi bir parametre Listesi içinde ...
Nasıl iki dosya Eclipse kullanarak kar...
Nasıl herhangi bir komut dosyası düzen...
Önde gelen çift eğik çizgi üzere bir U...