1

このコードの操作:

int myArray[10];
    for(int i = 0; i < myArray.size(); i++)
        cout << myArray[i] << endl;

コンパイラ エラー:

エラー: 'myArray' のメンバー 'size' の要求は、非クラス型 'int [10]' です |

明らかな何かが欠けているに違いありませんが、わかりません。

4

3 に答える 3

5

配列型はクラス型ではなく、メンバー関数を持ちません。したがって、配列には というメンバー関数がありませんsize。ただし、配列にはコンパイル時の固定サイズがあるため、サイズは10次のようになります。

for(int i = 0; i < 10; i++)
    cout << myArray[i] << endl;

もちろん、マジック ナンバーを避け、サイズを名前付き定数のどこかに入れるのが最善です。あるいは、配列型オブジェクトの長さを決定するための標準ライブラリ関数があります。

for(int i = 0; i < std::extent(myArray); i++)
    cout << myArray[i] << endl;

ただし、std::array代わりに、配列型オブジェクトをカプセル化し、sizeメンバー関数を提供するものを使用できます。

std::array<int, 10> myArray;
for(int i = 0; i < myArray.size(); i++)
    cout << myArray[i] << endl;
于 2013-05-01T21:27:10.190 に答える
1

sizeofオペレーターが必要です:

int myArray[10];
    for(int i = 0; i < (sizeof(myArray)/sizeof(myArray[0])); i++)
        cout << myArray[i] << endl;
于 2013-05-01T21:28:16.880 に答える
1

C++ の静的配列のサイズは定義されていません。静的配列を使用する必要がある場合は、別の変数で配列の長さを追跡する必要があります。

お気に入り:

const int size = 10;
int arr[size];
for(int i = 0; i < size; i++){
    cout << myArray[i] << endl;
}

一方、静的配列を使用する必要がない場合は、代わりに std::vector を使用することをお勧めします。

std::vector<int> arr;
for (int i = 0, max = arr.size(); i<max;i++){
  [...]
}
于 2013-05-01T21:28:29.867 に答える