2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Задать матрицу и передать в конструктор класса
Сообщение23.03.2010, 22:34 


31/08/09
183
Пробую вот так, но так не работает
Код:
int** massive = { 0, 1, 2
                            3, 4, 5 };
matrix m = ( massive );


Вот конструктор
Код:
matrix::matrix(int** matGet)
{
line = 2;
column = 3;
}


А ещё как определить у двойного массива, его ширину и высоту, если заранее это не известно?

 Профиль  
                  
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение23.03.2010, 23:31 


30/12/09
95
mycoding в сообщении #301561 писал(а):
Код:
int** massive = { 0, 1, 2
                            3, 4, 5 };



Так нельзя, надо вот так
Код:
int** massive = { {0, 1, 2},
                            {3, 4, 5} };



mycoding в сообщении #301561 писал(а):
Код:
matrix m = ( massive );



Равно лишнее.

mycoding в сообщении #301561 писал(а):
А ещё как определить у двойного массива, его ширину и высоту, если заранее это не известно?

Никак. Надо знать заранее.

 Профиль  
                  
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 08:31 


31/08/09
183
Хотелось бы реализовать универсальный конструктор, чтобы можно было матрицу любого размера передавать,
типа такого
Код:
matrix::matrix(int** matGet, int l, int c)
{
line = l;
column = c;
}


Но похоже так нельзя.

 Профиль  
                  
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 12:40 
Заслуженный участник


26/07/09
1559
Алматы
2Roman Voznyuk
Цитата:
Равно лишнее.

Так тоже можно делать.

2mycoding
Цитата:
А ещё как определить у двойного массива, его ширину и высоту, если заранее это не известно?

Использовать динамическое выделение памяти (через new, к примеру). Выделяем массив строк (столбцов), затем выделяем память для каждой строки (столбца). Или, если матрица хранится в разложении по строкам (столбцам), сразу можно выделить кусок памяти для всей матрицы. Или вы что-то другое имели ввиду?

-- Ср мар 24, 2010 15:43:56 --

Цитата:
Но похоже так нельзя.

Почему нельзя? В C++ все можно. :) Просто сохраните аргументы вашего конструктора в переменных-элементах класса. :)

 Профиль  
                  
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 16:13 


31/08/09
183
Цитата:
Почему нельзя? В C++ все можно. :) Просто сохраните аргументы вашего конструктора в переменных-элементах класса. :)

А как ? )

 Профиль  
                  
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 19:07 
Заслуженный участник


26/07/09
1559
Алматы
Да хоть так:
Используется синтаксис C++
template <typename Field>
class Matrix
{
    public:
        explicit Matrix(Field **Data, int Rows, int Columns):
            Data(Data), Rows(Rows), Columns(Columns) {}

        ...

    private:
        Field **Data;
        int Rows, Columns;
};
 

Хотя это слишком плохой стиль инициализации, инкапсуляция нарушается. Лучше все-таки копировать переданные данные.

А вы не пробовали в качестве матрицы использовать что-нибудь "побезопасней", вроде банального vector<vector<...> >?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group