2014 dxdy logo

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

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




 
 Задать матрицу и передать в конструктор класса
Сообщение23.03.2010, 22:34 
Пробую вот так, но так не работает
Код:
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 
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 
Хотелось бы реализовать универсальный конструктор, чтобы можно было матрицу любого размера передавать,
типа такого
Код:
matrix::matrix(int** matGet, int l, int c)
{
line = l;
column = c;
}


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

 
 
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 12:40 
2Roman Voznyuk
Цитата:
Равно лишнее.

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

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

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

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

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

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

 
 
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 16:13 
Цитата:
Почему нельзя? В C++ все можно. :) Просто сохраните аргументы вашего конструктора в переменных-элементах класса. :)

А как ? )

 
 
 
 Re: Задать матрицу и передать в конструктор класса
Сообщение24.03.2010, 19:07 
Да хоть так:
Используется синтаксис 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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group