0
선형 대수학 계산을위한 행렬 클래스를 작성하려고합니다. 나는 내가 원하는 것을 거의 끝 마쳤다. 하지만 목록 초기화를 사용하여 행렬을 만드는 생성자를 만드는 데는 약간의 문제가 있습니다. 이 내 클래스 데이터 멤버입니다 :매트릭스 클래스 목록 초기화
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 } };
가능합니까?
이 내 매트릭스 클래스입니다 :'템플릿 클래스 matrixT : 공공 부스트 :: 숫자 :: ublas :: 매트릭스 가'. 이렇게하면 가족과 더 많은 시간을 보낼 수 있습니다. –
Bathsheba
'Matx (std :: initializer_list>)'이 필요합니다. –
Jarod42
더 나은 성능을 얻으려면 매트릭스를 평평한 배열에 저장하고 수학을 사용하여 치수를 가짜로 만드는 것을 고려해야합니다. 이렇게하면 캐시 위치가 훨씬 향상됩니다. – NathanOliver