汎用クラスライブラリ - バグ、説明、質問、使用上の特徴、提案 - ページ 4

 
ワシリー・ソコロフ

文脈を理解できていない。いろんなスレで根拠もなく無意味なことを主張しまくれば、そりゃあ出禁一直線ですわな。ソースコードで裏付けを取るというのであれば、大歓迎です。ウラジミールが警告を出したのはそのためで、彼自身はソースコードが大好きで、時にはそれを要求することさえあるのです。自分のスレッドを見れば、その一例がわかる。


全くその通りです。Peterのコードを手に入れたら、そのパフォーマンスを比較するのはとてもいいことだと思います。

 
ワシリー・ソコロフ
見てきました。すべて正しく書かれています。すでに言われているように、辞書の要素検索は平均時間O(1)で、つまり瞬時に行われる。

これが、非論理的に聞こえるのです。数千のオーダーがある中で、最大10回のチェックが必要です。しかし、確かに平均すると一人ではありません。平均検索時間には常にアイテム数依存性がある。

 
コンビナート です。

いいえ、ごく稀にハッシュの衝突によりO(n)が得られます。これらは、最適なアルゴリズムに対する複雑さの推定値である。衝突の回数は、メモリのオーバーヘッドに関係します

通常の場合、ハッシュを計算することで必要なアイテムの位置が既に分かっているので、基本的に検索する必要はない。


私の記憶では、ハッシュ辞書のサイズの最適な選択は、期待される要素の2乗の数である。
衝突のわかりやすい例として、誕生日のパラドックスがある。

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

 
コンビナート です。

通常の場合、 ハッシュを計算することで問題のアイテムの位置が本質的にすでに分かって いるので、検索する必要はない。

それは、もっともな話ではないですね。でも、例を待って、それから実装の勘所を見たいと思います。

 
セルゲイ・デジュブリク

しかし、MQLには他の言語にはない魅力がたくさんある。多重継承、foreach、yeild return、lamb、...などなど。
IEnumerableが論外であることは明らかです。

では、IEnumerableを使わないでC#のコンテナを扱うにはどうしたらよいのでしょうか。
C++の古いアルゴリズムが残っており、関数へのポインタの代わりにインターフェイスを使用しています。

結局、C#とC++のごった煮になるんですけどね。

ごった煮のような名称は、まさに間違った名称が物事を混乱させるからです。

C++であれば、すべてがクリアになる。


PS そして、なぜこの多重継承がないのか? mql5ではそう書けないのでしょうか?

class A : public B
  {
  }

私が理解する限りでは、問題ありません。


だから、C/C++に行き着くのです。普通の名前を作れば。:)

 
ウラジーミル・カルプトフ

まさにその通りです。Peterのコードがあれば、性能比較ができて非常に良いと思います。

私はいつでもコードネームで話すことを望んでいます。作者が証明を提示すれば、素直に納得してくれるのに。

著者にタスクを提供させ、私たちのソリューションを効率で比較します。

 

トピックは固定されています。このように見ることができます。

ステップ1:"総合討論 "をクリックする

をクリックすると、そのトピックがピン留めされていることをすぐに確認することができます。

ステップ2:トピックが確定していることを確認する

 
fxsaber

それは、もっともな話ではないですね。でも、例を待って、それから実装の勘所を見たいと思います。


ハッシュは、予想される要素数に対する辞書のサイズが許せば、平均O(1)である。
あとは、コリジョン処理の実装次第で、リストを介することもできるし、サブヘッダにすることもできる......。


 
セルゲイ・デジュブリク

衝突の代表的な例として、誕生日のパラドックスがある。

wikiで読みました。直感的な理屈が全く理解できていない場合。

 
ウラジーミル・カルプトフ

トピックは固定されています。このように見ることができます。

をクリックすると、そのトピックがピン留めされていることをすぐに確認することができます。

ありがとうございます。このスレッドを面白くするために努力します。すでにこのテーマに対する需要はあると思います:))