1

線形代数計算用の行列クラスを作成しようとしています。書きたいことはほぼ書き終わりました。しかし、リストの初期化を使用してマトリックスを作成するコンストラクターを作成するのに少し問題があります。これは私のクラスデータメンバーです:

template <typename T>
class Matx
{
private:
    // data members
    //rows and columns of matrix
    int rows, cols;
    //pointer to pointer to type T
    T** matrix;

これは初期化のための私のコードです:

template <typename T>
Matx<T>::Matx(T* ptM[], int m, int n) : rows(m), cols(n)
{
    matrix = new T*[rows];
    for (int i = 0; i < rows; i++)
        matrix[i] = new T[cols];
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            matrix[i][j] = *(ptM[i] + j);
}

主に:

double mat[][5] = { {5,5,-1,7,54},{4,-9,20,12,-6},{9,-18,-3,1,21},{ 61,-8,-10,3,13 },{ 29,-28,-1,4,14 } };
double* pm[5];
for (int i=0;i<5;i++)
    pm[i]=mat[i];
Matx<double> yourMat = Matx<double>(pm, 5,5);

しかし、もっと良い方法があると思います。私が欲しいのは、配列のように初期化できることです。このようなもの:

Matx<double> yourMat = { {5,5,-1,7,54},{4,-9,20,12,-6},{9,-18,-3,1,21},{ 61,-8,-10,3,13 },{ 29,-28,-1,4,14 } };

出来ますか?

4

2 に答える 2