Как распечатать 2d массивы с функцией в C ++?

Я пытаюсь сделать функцию, которая печатает двухмерные массивы.
Я сделал один, который распечатывает 1d массивов.

 #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;
}

Я написал эти коды для распечатки двухмерных массивов, но мне это не удалось.

#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 [].
Каковы правильные коды для печати 2d массивов?

1

Решение

Поскольку размер массива должен быть известен во время компиляции, вы можете использовать шаблоны для обеспечения гибкости функции.

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 );

это гораздо приятнее, поскольку нет необходимости передавать размер массива где-либо, а также работать с трехмерным массивом, добавляя в шаблон дополнительный параметр.

4

Другие решения

Для многомерного массива вам нужно объявить размер массива в объявлении вашей функции.

Итак, ваш метод должен выглядеть так:

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

Тогда это должно скомпилироваться и работать.

1

Совет для распечатки двухмерных массивов — проще использовать переменные r и c (то есть для строк и столбцов), чтобы визуализировать, как распечатывается массив.

Как отмечено выше, размер столбца ТРЕБУЕТСЯ языком при передаче 2d массивов.

Заголовок функции должен выглядеть следующим образом:

void printArray (int theArray[][3],int sizeOfRow, int sizeOfCol)
0
По вопросам рекламы [email protected]