SORU
4 ŞUBAT 2010, PERŞEMBE


Ö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
4 ŞUBAT 2010, PERŞEMBE


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008