Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 23
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
İşlev, küresel düzeyde bildirilir. Bu nedenle, Karşılaştır kullanıcılarıyla bir çakışma var.
Adlandırma çakışmalarını azaltmak için Yazar, tüm genel Genel yardımcı işlevleri genel statik yöntemler yapabilir mi?
fxsaber :
Adlandırma çakışmalarını azaltmak için Yazar, tüm genel Genel yardımcı işlevleri genel statik yöntemler yapabilir mi?
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Derleyici hatası: 'operator=' - yapıda nesneler var ve kopyalanamaz
Bu şu an için. Her şey bir araya toplandığında, çöküş kaçınılmazdır) Birinin kitaplığını dahil etmek istiyorsanız, o zaman yazarın sizin yaptığınız gibi aynı "ilkel" şekilde, aynı sınıf ve işlev adlarını kullanarak yazdığı ortaya çıkar.
Seni makrolarla yeneceğim, seni makrolarla yeneceğim.
Kendinden bahsetmiyordu.
Tartışmanın tüm sayfalarını okudum ama nasıl kullanılacağını anlamadım?
Herkes örnek verebilir mi?
Tartışmanın tüm sayfalarını okudum ama nasıl kullanılacağını anlamadım?
Herkes örnek verebilir mi?
Öldür onu. Şimdiki haliyle kullanılamaz. Bunun yerine, standart CObject + CDictionary'yi kullanın . Çoğu görev için bu yeterlidir.
Anahtarla değer alma hakkında soru. Kütüphane kodunda, bu yöntem şöyle görünür
Kaynaktaki ME gezinme araçları (ALT+G ve CTRL+-) bu kitaplıkta çalışmayı reddediyor. Bu nedenle, mantığı takip etmek çok zordur. Özellikle seçilen çevrimdeki başlangıç değerini henüz öğrenemedim. Ancak bir hız varsa, bu değerin anahtar sayısından çok daha az olması gerektiği konusunda bir anlayış var.
Lütfen bu fonksiyonda hangi hıza ulaşıldığı fikrini açıklayın? Taşma açıkça mevcut. Ama görünüşe göre nedense kısa.
Tehdit Bir hata ayıklayıcı ile adım adım yürüdüm. TKey = int: m_bucket[Array[i]] = i örneğinde her şey netleşti. Yalnızca Array[i] == Array[j] (i != j) olduğunda çarpışmalarla ilgilenilmez.
Anahtarla değer alma hakkında soru. Kütüphane kodunda, bu yöntem şöyle görünür
Lütfen bu fonksiyonda hangi hıza ulaşıldığı fikrini açıklayın? Taşma açıkça mevcut. Ama görünüşe göre nedense kısa.
Bir keresinde CHashMap'in çalışma prensibini analiz ettim ve açıkladım.
Büyük olasılıkla bu konudaki kayıtları aramanız gerekir.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Genel sınıf kitaplığı - hatalar, açıklama, sorular, kullanım ve öneriler
Sergey Dzyublik , 2017.12.11 13:41
CHashMap'in mevcut uygulaması hakkında kısaca:
Öncelikle Entry<TKey,TValue>' nin ne olduğunu anlamanız gerekir.
Aslında, bu, aşağıdakileri içeren CLinkedList'teki gibi bir Düğümdür:
m_entries[] - eklenen anahtar ve değerin, hash_code'un sonraki yerleştirildiği bir "hücre" dizisi. Dizinin boyutu Kapasiteye karşılık gelir.
m_count - m_entries içindeki ilk kullanılmayan hücrenin dizinini gösterir. Başlangıç değeri 0'dır, Kapasite'ye kadar büyür, ardından tüm diziler Kapasite ve tüm dizilerin boyutunda bir artışla yeniden oluşturulur.
m_buckets[] - m_entries[] üzerindeki dizin dizisi. Varsayılan değer -1'dir. Dizinin boyutu Kapasiteye karşılık gelir.
Çarpışma yok, CHashMap kapsayıcısına benzersiz bir değer ekliyor:
Çarpışma yok, CHashMap kapsayıcısında anahtara göre değer alıyor:
Çarpışma çözünürlüğü:
Çarpışma, CHashMap kapsayıcısında anahtara göre değer alma:
Bir CHashMap kapsayıcısından bir değeri kaldırma:
Hash tablosunu yeniden oluşturma (Kapasite artırma süreci):
2017.12.11 itibariyle tanımlanan davranış
Şu anda bazı detaylar/katsayılar eklenebilir/değiştirilebilir.
Bir keresinde CHashMap'in çalışma prensibini analiz ettim ve açıkladım.
Büyük olasılıkla bu konudaki kayıtları aramanız gerekir.
Bulundu
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Genel sınıf kitaplığı - hatalar, açıklama, sorular, kullanım ve öneriler
Sergey Dzyublik , 2017.12.07 14:21
Bu örnekte, karma öğrencinin doğum günüdür.
Öğrenci günlüklerini içeren 365 raflı bir dolabımız var.
Her günlüğü, öğrencinin doğum gününe karşılık gelen bir rafa koyarız.
Petrov'un bir öğrencisinin günlüğüne ihtiyacımız var ve ne zaman doğduğunu biliyoruz.
Şimdi, doğum gününe göre, O(1)'de Petrov'un günlüğünü kolayca bulabiliriz, tıpkı diğer öğrencilerin günlüğü gibi.
İstisna, iki öğrencinin aynı doğum gününe sahip olmasıdır - buna çarpışma denir.
Çarpışma çözümü, iki veya daha fazla günlükten hangisine ihtiyacımız olduğunu belirlemek için ek bilgilerin kullanılmasıdır.
Bir liste aracılığıyla çözümleme, bir çarpışmaya katılan tüm öğelerin istenen öğeyle eşleşmesi için basit bir sıralı numaralandırmadır. Her günlüğü yırtın ve kimin olduğunu görün.
Alt karma sıralama, çarpışmaya dahil olan öğelerin bir karma tablosunun farklı bir kritere göre düzenlenmesidir. Örneğin, öğrenci doğduğunda.
Konuyla ilgileniyorsanız, youtube'daki MailRu'dan algoritmalar ve veri yapıları hakkında kursu tavsiye ederim.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Genel sınıf kitaplığı - hatalar, açıklama, sorular, kullanım ve öneriler
Sergey Dzyublik , 2017.12.08 14:40
Tembel için konuyla ilgili temel bilgiler:
https://www.slideshare.net/mkurnosov/6-32402313
Gerçekte, her şey çok daha karmaşıktır ve ilgili literatürde veya iyi "algoritmalar ve veri yapıları" derslerinde tartışılmaktadır.
Teşekkürler, hata ayıklama yardımcı oldu. Çarpışmalar için küçük listeler var. Dal boyunca koştum ve dehşete düştüm. İçinde olduğu ortaya çıktı...
Şu anda bazı detaylar/katsayılar eklenebilir/değiştirilebilir.
Çok teşekkürler! Açıklamamda bana çok yardımcı oldular.