私のxcodeプロジェクト(一般的な例の下)にいくつかの複雑なクラスがあり、ある種のデータサイズ制限に達したようです。必要な配列サイズが機能しません。配列サイズを縮小すると、コードは機能します (したがって、プログラミング エラーは発生しません) が、計画したサイズには小さすぎます。
インターネットを読んで、スタックサイズに問題があるに違いないことがわかりました。ほとんどの解決策は、「静的配列を動的配列に変換する」と言っています。
しかし、(1)多次元配列(複数の独立変数を監視し、各組み合わせが可能であるため、最大5〜10次元のものもあります)ではそれほど簡単ではなく、(2)ほとんどの配列は複数のクラスにネストされているため、さらに悪化します.
私はすでにデータを減らすことを考えていました
- いくつかのインテリジェントな転置を使用して、long の代わりに int...
- c (0-100%) の解像度を 10% のステップに変更します (したがって、[100] は [10] に減少します)。
しかし、一方でこれは全体的な結果を危険にさらす可能性があり、他方ではプロジェクトがまだ開始されているため、来月には大きくなります...この配列サイズの問題は遅かれ早かれ再発します...
ここでは、4 次元配列 (2x 2D) を示すコードを一般化しました。ほとんどのプロのプログラムは、さらに大きな配列を使用していると思います。だから、これを機能させる方法があるはずです...
//.h
class StatisticTable
{
public:
long Array1 [100][50];
long Array2 [100][50];
long Array3 [100][140];
};
class Statistic
{
public:
void WriteStatistic(short Parameter_a, short Parameter_b,
short Parameter_c, short Parameter_d);
short ReadStatistic(short Parameter_a, short Parameter_b,
short Parameter_c, short Parameter_d);
private:
StatisticTable Table[16][8];
};
//.cpp
void WriteStatistic(short a, short b, short c, short d)
{
for (int i=0; i<d, i++) {Table[a][b].Array1[c][i]++;}
for (int i=d; i<50, i++) {Table[a][b].Array2[c][i]++;}
//write some more stuff
return;
}