20

10個の要素を持つ非常に単純な配列を宣言し、そのように使用できます。

int myArray[10];
myArray[4] = 3;
std::cout << myArray[4];

または、10x100要素の2D配列を次のように宣言しますint myArray[10][100];

でさらに複雑な3D配列を作成するint myArray[30][50][70];

私は書くことさえできます:

int complexArray[4][10][8][11][20][3];
complexArray[3][9][5][10][15][3] = 5;
std::cout <<  complexArray[3][9][5][10][15][3];

では、配列を宣言するときに使用できる次元の最大数はいくつですか?

4

3 に答える 3

28

標準では、実装が少なくとも 256 (ISO 14882、B.2) を受け入れることを推奨していますが、以下のようにサポートする場合もあります。

制限により、以下に説明するものやその他のものを含む数量が制限される場合があります。各数量に続く括弧内の数字は、その数量の最小値として推奨されます。ただし、これらの量は単なるガイドラインであり、準拠を決定するものではありません。

[…]

— 宣言内の算術、構造、共用体、または不完全な型を変更するポインタ、配列、および関数の宣言子 (任意の組み合わせ) [256]。

C++03 でも C++11 でも同じです。

于 2012-05-24T13:21:27.913 に答える
5

私の最初の投稿!

価値があるのは、私のシステムの制限は、静的に割り当てられた場合はわずか 30 次元であり、スタックに割り当てられた場合は 19 次元です。システムは AMD A10-7700K、64 ビット (8 GB RAM) です。デフォルト設定で Visual C++ 2013 でコンパイルされています。

システムの最大値を決定するには、最小のデータ型 (char) と最小の次元サイズ (2) を使用することに注意してください。次元が 1 の場合 (任意の次元で) は冗長であり、配列の全体のサイズには影響しないため、次元が 1 の場合は制限がありません。データ型が大きいほど、または次元のサイズが大きいほど、使用できる次元が少なくなるのは当然です。しかし、私は、任意の 1 つ (そして 1 つだけ) の次元が 3 になることはできますが、4 にはならないことを発見しました。

#include<iostream>
int main()
{
   char a[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // ok
   char b[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // fail!
   static char c[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // ok
   static char d[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // fail!

}
于 2015-01-05T16:03:42.467 に答える
-4

配列を書き込むときの唯一の制限は、コンピューターのメモリ容量です。

于 2014-05-07T16:01:36.993 に答える