//+------------------------------------------------------------------+int PeterArray(int &Arr[],constint 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、3ページ続けられそうです :-)
ローテーション、ポーズ、ウォームアップオプションを追加(1パス目はカウントされません)
ローテーション、ポーズ、ウォームアップを加えたバリエーション(1パス目は考慮されていません)
構造体を使うと正常に動作しない例が多いのが不思議です...。何か理解できないのかもしれない...。
構造体を使うと正常に動作しない例が多いのが不思議です...。何か理解できないのかもしれない...。
構造を排除し、クラスを優先させる。MQLで作業しやすくなっています。
構造体を使うと正常に動作しない例が多いのが不思議です...。私にはわからないかもしれませんが......。
どういうことですか?意味がわからないんですけど。うまくいかない例とは? すべてうまくいきます。
構造体を使うと正常に動作しない例が多いのが不思議です...。何か理解できないのかもしれない...。
この関数は、構造体のどのフィールドを比較すべきかを知らないのです。
この関数は、構造体のどのフィールドが比較されるかを知らない。
フィールド単位で比較する機能です。その結果、何らかの理由で配列の最後の要素が削除される。
コードを勉強する。
あなたのコードをチェックしました。あなたはすべて正しいことをしたのです。
ただ、なぜそのセリフに時間を取られるのかが理解できない。
この行がない場合、コードは2マイクロ秒で実行されます。でも、それがないとできないんです。
最速の解決策ではないかもしれませんが、最も簡潔な方法の一つです。
SZYさん、私の解答で関数を書くとき、一つ間違いがありましたね。
私の機能は
ArrayResize(Arr,q);
а
でも、とにかくありがとう。
この機能は、フィールドを比較しています。その結果、なぜか配列の最後の要素が削除されてしまうのです。
ある要素を別の要素に代入するとき、つまり"="記号を使用するとき?
気づいたんですが、自分でコピーしたほうがいいんですね。何にも頼れない。