Форум программистов, компьютерный форум CyberForum.ru

Передача динамических матриц в функцию - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
www.ru
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
27.11.2009, 20:26     Передача динамических матриц в функцию #1
Здравствуйте, ребята!

У меня очень простой вопрос.

Я работаю с очень большими матрицами. Они создаются в куче:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const N = 10000;
 
int **MA = new int * [N];
for(int i = 0; i < N; i++){
      MA[i] = new int[N];
}
 
...
 
 
for(int i = 0; i < N; i++){
      delete [] MA[i];
}
delete [] MA;
Как передать матрицу в подобную функцию:

C++
1
2
3
4
5
6
7
void InputMatrix(int M[][N]){
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            M[i][j] = 1;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2009, 20:26     Передача динамических матриц в функцию
Посмотрите здесь:

Написать функцию, вычисляющую произведение двух матриц C++
Инициализация динамических матриц в с++ C++
Организация программ по обработке динамических матриц C++
C++ Передача динамических массивов в функции
C++ Написать функцию, вычисляющую произведение двух матриц
Передача двухмерного массива из функцию в функцию C++
C++ Перемножение матриц с использованием динамических массивов
Класс для динамических матриц. После ввода элементов матрицы программа аварийно закрывается C++
Передача динамических массивов в функции. А точнее отдельных частей C++
C++ Передача объекта в функцию или функцию друга
C++ Написать функцию умножения матриц
Реализовать функцию сложения матриц C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.11.2009, 20:33     Передача динамических матриц в функцию #2
да вроде так было
C++
1
void Func(int **A, const int N, const int M)
www.ru
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
27.11.2009, 21:17  [ТС]     Передача динамических матриц в функцию #3
а есть какое-то приведение типов? (ясное дело чуть подправить тип матрицы)...
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.11.2009, 21:23     Передача динамических матриц в функцию #4
не понял вопроса. приведения к чему? что чего хотите добиться?
www.ru
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
27.11.2009, 23:46  [ТС]     Передача динамических матриц в функцию #5
не хотелось бы менять интерфейс передачи параметров в функции (а их много) а за ним и сам код функций.

Добавлено через 7 минут
Наверное придется создавать свой класс матриц, в конструкторе распределить память методом new, в деструкторе освободить методом delete и перегрузить операцию []. Тогда в функциях поменяется только заголовок (а именно имя типа матрицы), а код останется неизменным. Насколько эффективно такое решение?

Добавлено через 1 час 18 минут
Где-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class matrix{
    int N;
    int **Ref;
public:
    matrix(int newN){
        N = newN;
        Ref = new int * [N];
        for(int i = 0; i < N; i++){
            Ref[i] = new int[N];
        }
    }
 
    ~matrix(){
        for(int i = 0; i < N; i++){
            delete [] Ref[i];
        }
        delete [] Ref;
    }
 
    int *operator[](int i){
        return Ref[i];
    }
};
Yandex
Объявления
27.11.2009, 23:46     Передача динамических матриц в функцию
Ответ Создать тему
Опции темы

Текущее время: 15:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru