1

二次元配列を出力する関数を作ろうとしています。1次元配列を出力するものを作成しました。

 #include <iostream>
 using namespace std;

void printArray (int theArray[],int sizeOfArray);
int main ()

{
int array1[3] = {1,3,7};
int array2[5] = {123,5,23,2,324};

printArray(array1, 3);
printArray(array2, 5);

}  

void printArray (int theArray[],int sizeOfArray){


for (int x=0; x<sizeOfArray; x++) {
    cout<<theArray[x] <<" ";
}
cout<<endl;  
}

2次元配列を出力するためにこれらのコードを書きましたが、失敗しました。

#include <iostream>
using namespace std;

void printArray (int theArray[][],int sizeOfRow, int sizeOfCol);

int main ()

{
int array[2][3] = {{1,3,7},{5,3,2}};

printArray(array, 2,3);


}

void printArray (int theArray[][],int sizeOfRow, int sizeOfCol){


for (int x=0; x<sizeOfRow; x++) 

    for (int y=0; y<sizeOfCol; y++) {

        cout<<theArray[x][y] <<" ";
}
cout<<endl;
}

私のコンパイラは、配列が不完全な要素型 'int[]' を持っていると言います。2次元配列を印刷するための正しいコードは何ですか?

4

3 に答える 3

3

コンパイル時に配列のサイズを知る必要があるため、テンプレートを使用して関数に柔軟性を持たせることができます。

template< typename T, size_t N, size_t M >
void printArray( T(&theArray)[N][M]  ) {
    for ( int x = 0; x < N; x ++ ) {
        for ( int y = 0; y < M; y++ ) {
            cout << theArray[x][y] << " ";
        }
    }
}

printArray( array ); 

配列の次元をどこにも渡す必要がないため、これははるかに優れています。テンプレートに追加のパラメーターを追加することで、3D、4D 配列でも機能します。

于 2013-05-02T20:46:08.103 に答える
1

多次元配列の場合、関数宣言で配列のサイズを宣言する必要があります。

したがって、メソッドは次のようにする必要があります。

void printArray (int theArray[][3],int sizeOfRow, int sizeOfCol)

その後、コンパイルして動作するはずです。

于 2013-05-02T20:45:24.660 に答える