定義された要素の配列をクリアする。 - ページ 17

 
Алексей Тарабанов:

人を馬鹿にしない

スタートさえしなかった;-)

ベンチマークがあるときの「チェックサム」にも触れていない。

漸近法を覚えておくと、最終的に速度を推定することができる。
そして、入力データの量、削除する要素の数、その位置・分布(現実には決して一様 ではない)に依存するということです。

と、グラフが描ける/描かなければならないこと。

目標達成のための努力は惜しまないが、何とかしてその方法論に従わなければならない。

あと2、3ページ続けられそうです :-)

 

ローテーション、ポーズ、ウォームアップオプションを追加(1パス目はカウントされません)

ファイル:
 
Stanislav Dray:

ローテーション、ポーズ、ウォームアップを加えたバリエーション(1パス目は考慮されていません)

構造体を使うと正常に動作しない例が多いのが不思議です...。何か理解できないのかもしれない...。

 
Vladimir Pastushak:

構造体を使うと正常に動作しない例が多いのが不思議です...。何か理解できないのかもしれない...。

構造を排除し、クラスを優先させる。MQLで作業しやすくなっています。

 
Vladimir Pastushak:

構造体を使うと正常に動作しない例が多いのが不思議です...。私にはわからないかもしれませんが......。

どういうことですか?意味がわからないんですけど。うまくいかない例とは? すべてうまくいきます。

1

 
Vladimir Pastushak:

構造体を使うと正常に動作しない例が多いのが不思議です...。何か理解できないのかもしれない...。

この関数は、構造体のどのフィールドを比較すべきかを知らないのです。

 
Dmitry Fedoseev:

この関数は、構造体のどのフィールドが比較されるかを知らない。

フィールド単位で比較する機能です。その結果、何らかの理由で配列の最後の要素が削除される。

 
構造全体ではなく、フィールドがストリングでシフトしているのだとわかった...。
 
Nikolai Semko:

コードを勉強する。

あなたのコードをチェックしました。あなたはすべて正しいことをしたのです。

ただ、なぜそのセリフに時間を取られるのかが理解できない。

//+------------------------------------------------------------------+
int PeterArray(int &Arr[],const int val) // вариант Peter Konow
  {
   int deleted=0,q=0;
   for(int a1=0; a1<ArraySize(Arr); a1++)
     {
      if(deleted)Arr[q]=Arr[q+deleted];
      if(Arr[q]==val){deleted++; q--;} <-----------Выполнение этих операций занимает кучу времени.
      q++;
     }
   ArrayResize(Arr,q);
   return (q);
  }
//+------------------------------------------------------------------+

この行がない場合、コードは2マイクロ秒で実行されます。でも、それがないとできないんです。

最速の解決策ではないかもしれませんが、最も簡潔な方法の一つです。


SZYさん、私の解答で関数を書くとき、一つ間違いがありましたね。

私の機能は

ArrayResize(Arr,q);

а

ArrayResize(Arr,ArraySize(Arr) - deleted);

でも、とにかくありがとう。

 
Vladimir Pastushak:

この機能は、フィールドを比較しています。その結果、なぜか配列の最後の要素が削除されてしまうのです。

ある要素を別の要素に代入するとき、つまり"="記号を使用するとき?

気づいたんですが、自分でコピーしたほうがいいんですね。何にも頼れない。