Как вернуть двумерный массив в с++? Как можно вернуть такой массив?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 matrix[i][j]=j;
}
}
return matrix[][]; //ошибка
}
};

21 Авг 2019 в 07:08
185 +1
0
Ответы
1

Возвращение двумерного массива в 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, чтобы избежать утечек памяти.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир