Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 4

 
Vasili Sokolov :

bağlamı anlamıyorsun. Farklı dallardan geçerseniz ve delil olmadan saçmalık iddiasında bulunursanız, o zaman evet, bu doğrudan bir yasaklama yoludur. İfadelerinizi kaynak koduyla yedeklemeye hazırsanız - hoş geldiniz. Vladimir sana bu yüzden bir uyarı verdi, çünkü. kendisi kaynak kodunu sever ve hatta bazen sağlanmasını gerektirir. Örnek için kendi şubelerine bakın.


Oldukça doğru. Peter'dan bir kod varsa, performansı karşılaştırmak çok güzel olacak.

 
Vasili Sokolov :
Baktı. Her şey doğru yazılmış. Ayrıca, sözlükte bir öğe aramasının ortalama O (1) süresinde, yani anında gerçekleştirildiği söylendi.

Kulağa mantıksız gelen bu. Bin sipariş arasında en fazla 10 adet çek gereklidir. Ama kesinlikle ortada biri değil. Ortalama arama süresinin her zaman eleman sayısına bir bağımlılığı vardır.

 
birleştirici :

Numara. O(n) çok nadir durumlarda karma çarpışmalardan kaynaklanır. Bunlar, optimal algoritma için karmaşıklık tahminleridir. Çarpışma sayısı bellek yüküyle ilgilidir

Olağan durumda, aslında aramak gerekli değildir, çünkü hash'i hesapladıktan sonra, esasen istenen elemanın yerini zaten biliyoruz.


Hatırlanacağı kadarıyla, hash sözlüğünün boyutunu, beklenen öğelerin karesi olarak seçmek en uygunudur.
Çarpışmalara iyi bir örnek, doğum günü paradoksu.

https://ru.wikipedia.org/wiki/

 
birleştirici :

Olağan durumda, aslında aramak gerekli değildir, çünkü hash'i hesapladıktan sonra, esasen istenen elemanın yerini zaten biliyoruz.

Kulağa inanılmaz geliyor. Ama örnekleri bekleyeceğim, sonra uygulamanın sakatatlarına bakacağım.

 
Sergey Dzyublik :

Bir yandan harika ama diğer yandan MQL'de diğer dillere kıyasla çok şey olduğunu hatırlıyoruz: çoklu kalıtım yok, foreach, yeild return, lamb, ...
IEnumerable'ın söz konusu olmadığı ortaya çıkıyor.

O zaman IEnumerable olmadan C# kapsayıcılarını kullanmak nasıl uygun olur?
Eski C++ algoritmaları kalır ve işlev işaretçileri yerine arabirimler kullanılır.

Sonunda, bir karmakarışık elde ederiz - C # ve C ++.

Karışıklık, her şeyi karıştıran yanlış isimler yüzünden ortaya çıktı.

C++ altında biçerlerse her şey netleşir.


PS Ve neden çoklu kalıtım yok? Bunu mql5'te yazamaz mıyım?

 class A : public B
  {
  }

Anladığım kadarıyla sorun yok.


Bu nedenle, C/C++ ile bitirdik. Normal isimler yaparsanız. :)

 
Vladimir Karputov :

Oldukça doğru. Peter'dan bir kod varsa, performansı karşılaştırmak çok güzel olacak.

Her zaman kodların dilini konuşmaya hazırım. Yazarın bana bunu kanıtlamamı önermesi yeterliydi ve hemen işe koyulacaktım.

Yazarın sorunu sunmasına izin verin ve çözümlerimizi verimlilik açısından karşılaştıralım.

 

Konu sabitlenmiştir. Bunu şu şekilde görüntüleyebilirsiniz:

Adım 1: "Genel Tartışma" üzerine tıklayın

ve konunun sabitlendiğini hemen görebilirsiniz:

2. Adım: Konunun sabitlendiğini görebilirsiniz

 
fxsaber :

Kulağa inanılmaz geliyor. Ama örnekleri bekleyeceğim, sonra uygulamanın sakatatlarına bakacağım.


Beklenen öğe sayısına sözlük boyutu izin veriyorsa, hash'ler ortalama olarak O(1)'dir.
Ve sonra, çarpışmaları çözmek için uygulamalara bir bağımlılık var, bu bir liste, hatta belki bir alt hash aracılığıyla olabilir ....


 
Sergey Dzyublik :

Çarpışmalara iyi bir örnek, doğum günü paradoksu.

Wiki'de okuyun. Sezgisel akıl yürütmenin mantığını hiç anlamadığınız durum.

 
Vladimir Karputov :

Konu sabitlenmiştir. Bunu şu şekilde görüntüleyebilirsiniz:

ve konunun sabitlendiğini hemen görebilirsiniz:

Teşekkür ederim. Bu konuyu ilginç hale getirmeye çalışalım. Konuya olan talebi şimdiden görüyorum :))

Neden: