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

  • ipsy

    ipsy

    1 EKİM 2012
  • Mindy

    Mindy

    20 NİSAN 2006
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013