Как вернуть двумерный массив в с++? Как можно вернуть такой массив?class Matrix{ public: int i,j; int returnMatrix(int col,int row){ int matrix[col][row]; for(i=0;i matrix[i][j]=i; for(j=0;j
Возвращение двумерного массива в C++ несколько сложнее, чем простого одномерного массива, поскольку нельзя возвращать массивы напрямую из функций. Однако есть несколько способов обойти это ограничение. Один из них - использовать возвращение указателя на массив.
Вот как можно изменить ваш класс Matrix, чтобы вернуть двумерный массив:
#include <iostream> class Matrix{ public: int** returnMatrix(int col, int row){ int** matrix = new int*[row]; for(int i=0;i<row;i++){ matrix[i] = new int[col]; for(int j=0;j<col;j++){ matrix[i][j] = j; // инициализация элементов массива } } return matrix; } void deleteMatrix(int** matrix, int row){ for(int i=0;i<row;i++){ delete[] matrix[i]; } delete[] matrix; } }; int main(){ Matrix m; int row = 3; int col = 4; int** result = m.returnMatrix(col, row); for(int i=0; i<row; i++){ for(int j=0; j<col; j++){ std::cout << result[i][j] << " "; } std::cout << std::endl; } m.deleteMatrix(result, row); return 0; }
В данном примере используется динамическое выделение памяти для двумерного массива, и возвращается указатель на указатель. Это позволяет получить доступ к массиву в другой функции или части кода. Не забудьте освободить память с помощью функции deleteMatrix, чтобы избежать утечек памяти.
Возвращение двумерного массива в C++ несколько сложнее, чем простого одномерного массива, поскольку нельзя возвращать массивы напрямую из функций. Однако есть несколько способов обойти это ограничение. Один из них - использовать возвращение указателя на массив.
Вот как можно изменить ваш класс Matrix, чтобы вернуть двумерный массив:
#include <iostream>class Matrix{
public:
int** returnMatrix(int col, int row){
int** matrix = new int*[row];
for(int i=0;i<row;i++){
matrix[i] = new int[col];
for(int j=0;j<col;j++){
matrix[i][j] = j; // инициализация элементов массива
}
}
return matrix;
}
void deleteMatrix(int** matrix, int row){
for(int i=0;i<row;i++){
delete[] matrix[i];
}
delete[] matrix;
}
};
int main(){
Matrix m;
int row = 3;
int col = 4;
int** result = m.returnMatrix(col, row);
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
std::cout << result[i][j] << " ";
}
std::cout << std::endl;
}
m.deleteMatrix(result, row);
return 0;
}
В данном примере используется динамическое выделение памяти для двумерного массива, и возвращается указатель на указатель. Это позволяет получить доступ к массиву в другой функции или части кода. Не забудьте освободить память с помощью функции deleteMatrix, чтобы избежать утечек памяти.