voidOnStart()
{
int a[];
int size=5; // размер массиваbool flag=true; // флаг направления индексацииArraySetAsSeries(a,flag); // зададим направление индексацииArrayResize(a,size); // зададим размер массива//---for(int i=0;i<size;i++) // задаём значения и распечатываем массив
a[i]=size-i; // 54321Print("[",a[0],"][",a[1],"][",a[2],"][",a[3],"][",a[4],"]");
//---ArrayResize(a,size-1); // уменьшаем размер 5432ArraySetAsSeries(a,!flag); // меняем направление индексации 2345ArrayResize(a,size); // возвращаем в исходный размер 2345хArraySetAsSeries(a,flag); // возвращаем в исходную индексацию х5432
a[0]=6; // задаём "пустому" нулевому данному значение//---Print("[",a[0],"][",a[1],"][",a[2],"][",a[3],"][",a[4],"]");
// в результате получаем 64321 вместо нужного 65432
}
この件もCDに書いてください。レビューにあるものがすべてテスターで選べるわけではない」みたいな。
いや、リバウンドだ。アルパリとMKの2つのターミナルを開いていて、行ったり来たりしているのですが、後者ではマーケット概要にEURGBPを追加するのを忘れていました。
スクリプトの中で、インジケータの系列のように動作する配列を作成しようとしています。すなわち、新しいエントリーが現れると、配列全体を後ろにずらし、新しいエントリーをNULL位置にする。
よく言われるように、なぜ?
もしかしたら間違って いたかもしれませんが、真っ先に思いつくのは、これも言語最適化のバグです。
HZZY あと、ループを使ってデータを移動させたいと考えている方にもお願いなんですが、5...100...1000...という配列の場合はうまくいくんですが、それ以上の配列の 場合はうまくいかないんですね。
スクリプトの中で、インジケータの系列のように動作する配列を作成しようとしています。すなわち、新しいエントリーが現れると、配列全体を後ろにずらし、新しいエントリーをNULL位置にする。
なぜかと言われれば、それは
また、CArrayInt クラスを使用して、そこにデータを挿入すると?
配列自体はクラスでプライベートなまま、パラメータで配列を渡せるようにしたい。
繰り返しになりますが、私の記憶では、この方法はループ内のデータをシフトさせることに従事しており、かなり遅いです。
スクリプトの中で、インジケータの系列のように動作する配列を作成しようとしています。すなわち、新しいエントリーが現れると、配列全体を後ろにずらし、新しいエントリーをNULL位置にする。
よく言われるように、なぜ?
もしかしたら間違って いたかもしれませんが、真っ先に思いつくのは、これも言語最適化のバグです。
HZZY あと、ループを使ってデータを移動させたいと考えている方にもお願いなんですが、5...100...1000...という配列の場合はうまくいくんですが、それ以上の配列の場合はうまくいかないんですね。
ZZI」については、リサイズでメモリが断片化されないのですね。
mql5で他に(メモリを確保する)関数を知りません。
HH そして、私が理解した限りでは、配列の方向も純粋に仮想的なものだと思います。
ZZY どうやらメモリではなく、アドレス空間の仮想化に取り組まなければならないようです。また、これでは作業も遅くなってしまいます。やはり直接アクセスの方が早いですね。
配列自体はクラスでプライベートなまま、パラメータで配列を渡せるようにしたい。
繰り返しになりますが、私の記憶では、この方法はループの中でデータをシフトさせるだけで、かなり遅いです。
配列クラスの改良を考えなければならないだろう(自分にとって)。
そうですね、ゼロポジションでのバーチャルインサートはいいかもしれません。しかし、本当にデータを動かすわけではなく、そうでなければ長くて非効率的です。
とにかくメモリを直接扱えないのが悪い、仮想化アクセラレーションが充実している、C++の速度だって配列ではなくセルアドレスにすれば1.5倍は速くなる。
スクリプトの中で、インジケータの系列のように動作する配列を作成しようとしています。つまり、新しいエントリーが現れると、配列全体が後ろにシフトされ、新しいエントリーはゼロの位置に作られる。
ZZZY私は心配しないように周期でデータを移動するように助言したい同志を求め、このオプションは、5の配列のためにうまく動作...100...1000...が、大きなサイズの配列では受け入れられません。
しかし、アレイ全体を移動させるのはやめたほうがいいのでは?:)
動的配列で,新しいデータは末尾に書き込まれ,サイズは変更/記憶され,AsSeriesフラグはインデクシングのみを変更する.
通常のオーダーでは配列のN要素、シリアルではSize-N-1となります。