Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 35
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Neredeyse imkansız ve karşılaşırsanız, erişim hala süper etkilidir.
Herhangi bir verimlilik düzeyinde çarpışma kötüdür. Cevap için teşekkürler. dikkate alacağım.
Herhangi bir verimlilik düzeyinde çarpışma kötüdür. Cevap için teşekkürler. dikkate alacağım.
Tanım olarak, çarpışmasız hashmap yoktur.
Çarpışma sorusu. Bu durumda bir çarpışma ile karşılaşmak mümkün mü?
27.000 kayıt üretilmiş olsaydı.
Özellikle koleksiyonun büyümesi (yeniden boyutlandırılması) ile sürekli karşı karşıya kalacaksınız. Karma ayrıca çete numarasına kesildiğinden ve her zaman sınırlı sayıda olduğundan (ideal olarak kapasiteye eşittir).
Buradan çıkan sonuçlar:
1. Harita için önemli olan hash fonksiyonunun kriptografik gücü değil, hızı önemlidir. Hash işlevi iyi bir rastgelelik sağlamak için yeterlidir ve o kadar.
2. Yeniden boyutlandırmadan en iyi şekilde kaçınılmalıdır. Ana dezavantajı getiren yeniden boyutlandırmadır. hash fonksiyonu çarpışmaları değil. Mümkün olduğunda, koleksiyonu önceden belirlenmiş sayıda öğeyle başlatın. Bunları tam olarak bilmiyor olsanız bile, yaklaşık sayıyı belirtin - bu algoritmaya çok yardımcı olacaktır.
3. Çarpışmalar standart sıkıştırma mekanizmasıdır. Çarpışmalar sayesinde, örneğin 159, 4'569'209, 29'459'876 kimliğine sahip üç kaydı, örneğin, son iki değerin her ikisi de düşse bile, 30.000.000 değil, üç uzunlukta bir dizide saklamak mümkündür. indeks 2 ile bant içine.
2. Yeniden boyutlandırmadan en iyi şekilde kaçınılmalıdır. Ana dezavantajı getiren yeniden boyutlandırmadır. hash fonksiyonu çarpışmaları değil. Mümkün olduğunda, koleksiyonu önceden belirlenmiş sayıda öğeyle başlatın. Bunları tam olarak bilmiyor olsanız bile, yaklaşık sayıyı belirtin - bu algoritmaya çok yardımcı olacaktır.
Lütfen bir örnekle gösteriniz.
Şimdilik sadece bunu kullanıyorum.
Lütfen bir örnekle gösteriniz.
Şimdilik sadece bunu kullanıyorum.
Bir CHashMap koleksiyonu oluştururken, bir kapasite parametresi alan oluşturuculardan birini kullanın. Yeniden boyutlandırma sırasında performansa ne olur, CDicionary hakkındaki makaleme bakın. Bu algoritmanın tam bir analizi var.
Çok sıra dışı CHashMap davranışı bulundu.
Anahtarın sözde eklendiği ortaya çıktı, ancak ondan hiçbir şey okunamıyor. Ancak, anahtar tekrar eklenir eklenmez okunabilir hale gelir!
BUG mu?
Örnekte 1.75141 fiyatı bir başkasıyla değiştirilirse, doğru şekilde çalışacaktır.
ZY Bu davranışı büyük bir kodda hata ayıklamadan tanımlamak ve bu kadar kısa bir örnek oluşturmak çok zordu.
Mümkün olduğunda, koleksiyonu önceden belirlenmiş sayıda öğeyle başlatın. Bunları tam olarak bilmiyor olsanız bile, yaklaşık sayıyı belirtin - bu algoritmaya çok yardımcı olacaktır.
Yukarıdaki örnekte, yapıcı aracılığıyla kapasite belirlemeye çalıştım. Belirli bir kapasite değerinden, örnek doğru çalışmaya başlar.
Ama bence bu bir tesadüf.
Çok sıra dışı CHashMap davranışı bulundu.
Anahtarın sözde eklendiği ortaya çıktı, ancak ondan hiçbir şey okunamıyor. Ancak, anahtar tekrar eklenir eklenmez okunabilir hale gelir!
BUG mu?
Örnekte 1.75141 fiyatı bir başkasıyla değiştirilirse, doğru şekilde çalışacaktır.
ZY Bu davranışı büyük bir kodda hata ayıklamadan tanımlamak ve bu kadar kısa bir örnek oluşturmak çok zordu.
Düzeltildi, bugünkü sürümde olacak.
Teşekkür ederim! düzeltmeyi görüyorum.
Yukarıdaki örnekte, yapıcı aracılığıyla kapasite belirlemeye çalıştım. Belirli bir kapasite değerinden, örnek doğru çalışmaya başlar.
Ama bence bu bir tesadüf.
Evet, bir aksaklıkta bir aksaklık var. Jenerik kullanmaktan kesinlikle vazgeçerim.