mrcnn
05-07-2008, 10:05
Мне нужна матрица из векторов, например такого вида
(0,0,0) (1,1,1)
(1,1,1) (1,1,1)
Для этого нужно, чтобы я мог создавать матрицу произвольного типа : то есть, чтобы функция получила тип и динамически создала данные нужного типа
1. Как описать произвольный тип матрицы?
template <class T>
typedef T** matrx;
(Насколько правильно такое описание?)
2. Как функции передать тип матрицы, которая мне нужна, чтобы она создала матрицу нужного типа?
template <class T>
matrx create_matrix(int sz, T)
3. matrx create_matrix(int sz, T) Как функция может определить что за параметр T ей "прислали"?
Нужно чтобы функция автоматически определила тип T и динамически создала данные нового типа matrix[k]=new T[columns];
matrx create_matrix(int rows, int columns);
matrx create_matrix(int rows, int columns)
{
matrx matrix;
matrix = new vectr[rows];
for(int k=0;k<rows;k++)
{
matrix[k]=new T[columns];
}
return (matrix);
}
Сейчас в таком виде
typedef doubl** matrx;
matrx create_matrix(int rows, int columns);
matrx create_matrix(int rows, int columns)
{
matrx matrix;
matrix = new vectr[rows];
for(int k=0;k<rows;k++)
{
matrix[k]=new doubl[columns];
}
return (matrix);
}
то есть функция создает матрицу только типа заданного как doubl
typedef int doubl;
typedef double doubl;
(0,0,0) (1,1,1)
(1,1,1) (1,1,1)
Для этого нужно, чтобы я мог создавать матрицу произвольного типа : то есть, чтобы функция получила тип и динамически создала данные нужного типа
1. Как описать произвольный тип матрицы?
template <class T>
typedef T** matrx;
(Насколько правильно такое описание?)
2. Как функции передать тип матрицы, которая мне нужна, чтобы она создала матрицу нужного типа?
template <class T>
matrx create_matrix(int sz, T)
3. matrx create_matrix(int sz, T) Как функция может определить что за параметр T ей "прислали"?
Нужно чтобы функция автоматически определила тип T и динамически создала данные нового типа matrix[k]=new T[columns];
matrx create_matrix(int rows, int columns);
matrx create_matrix(int rows, int columns)
{
matrx matrix;
matrix = new vectr[rows];
for(int k=0;k<rows;k++)
{
matrix[k]=new T[columns];
}
return (matrix);
}
Сейчас в таком виде
typedef doubl** matrx;
matrx create_matrix(int rows, int columns);
matrx create_matrix(int rows, int columns)
{
matrx matrix;
matrix = new vectr[rows];
for(int k=0;k<rows;k++)
{
matrix[k]=new doubl[columns];
}
return (matrix);
}
то есть функция создает матрицу только типа заданного как doubl
typedef int doubl;
typedef double doubl;