From 1f1ed2864420b6176772bd84d34b5c179dc510ad Mon Sep 17 00:00:00 2001 From: myazi Date: Sat, 20 May 2017 00:13:57 +0800 Subject: [PATCH] Update matrix.h --- matrix.h | 62 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/matrix.h b/matrix.h index ce0f713..f5280f0 100644 --- a/matrix.h +++ b/matrix.h @@ -48,10 +48,10 @@ class Matrix } /** - new和malloc的本质区别在于,前者是针对对象而言,无论是基本类型还是类类型,结构体类型都可以看作对象, - 使用new是会调用对象的构造函数,初始化对象,即首先得分配内存,后初始化,分配内存这事内部实现可能是调用malloc - 而malloc只是分配内存,对于基本类型而言,这是没问题的,后期可以继续初始化,而对于对象而言,malloc只分配内存 - 不调用构造函数,所以不会对对象进行初始化 + new鍜宮alloc鐨勬湰璐ㄥ尯鍒湪浜庯紝鍓嶈呮槸閽堝瀵硅薄鑰岃█锛屾棤璁烘槸鍩烘湰绫诲瀷杩樻槸绫荤被鍨嬶紝缁撴瀯浣撶被鍨嬮兘鍙互鐪嬩綔瀵硅薄锛 + 浣跨敤new鏄細璋冪敤瀵硅薄鐨勬瀯閫犲嚱鏁帮紝鍒濆鍖栧璞★紝鍗抽鍏堝緱鍒嗛厤鍐呭瓨锛屽悗鍒濆鍖栵紝鍒嗛厤鍐呭瓨杩欎簨鍐呴儴瀹炵幇鍙兘鏄皟鐢╩alloc + 鑰宮alloc鍙槸鍒嗛厤鍐呭瓨锛屽浜庡熀鏈被鍨嬭岃█锛岃繖鏄病闂鐨勶紝鍚庢湡鍙互缁х画鍒濆鍖栵紝鑰屽浜庡璞¤岃█锛宮alloc鍙垎閰嶅唴瀛 + 涓嶈皟鐢ㄦ瀯閫犲嚱鏁帮紝鎵浠ヤ笉浼氬瀵硅薄杩涜鍒濆鍖 **/ int initMatrix(Matrix *matrix,int col,int row) @@ -105,7 +105,7 @@ class Matrix } int copy(Matrix matrixA,Matrix *matrixB) { - if(!matrixB)//还应该考虑a + if(!matrixB)//杩樺簲璇ヨ冭檻a { cout<<"matrixB is null"<row==1) @@ -169,7 +183,7 @@ class Matrix matrix->row--; return 0; } - void transposematrix(Matrix matrix,Matrix *matrixT)//矩阵形式的转置 + void transposematrix(Matrix matrix,Matrix *matrixT)//鐭╅樀褰㈠紡鐨勮浆缃 { if(matrixT->col!=matrix.row||matrixT->row!=matrix.col) { @@ -223,7 +237,7 @@ class Matrix return 0; } - int multsmatrix(Matrix *multsMatrix,Matrix matrix1,Matrix matrix2)//矩阵形式的相乘 + int multsmatrix(Matrix *multsMatrix,Matrix matrix1,Matrix matrix2)//鐭╅樀褰㈠紡鐨勭浉涔 { if(matrix1.row!=matrix2.col||multsMatrix->col!=matrix1.col||multsMatrix->row!=matrix2.row) { @@ -250,7 +264,7 @@ class Matrix } return 0; } - //行列式 + //琛屽垪寮 double detmatrix(Matrix matrix) { if(matrix.col!=matrix.row) @@ -266,28 +280,28 @@ class Matrix double max=MIN; int swap=-1; double temp; - double aij[MAX_MATRIX_COL][MAX_MATRIX_ROW];//这里用矩阵就更好了 - for(k=0; kmax)//每一次消元都是比较第k列的元素,选出第k列中最大的一行 + if(matrixCopy.mat[i][k]>max)//姣忎竴娆℃秷鍏冮兘鏄瘮杈冪k鍒楃殑鍏冪礌锛岄夊嚭绗琸鍒椾腑鏈澶х殑涓琛 { swap=i; } - }//找到第k次列主元消去的最大行的下标 + }//鎵惧埌绗琸娆″垪涓诲厓娑堝幓鐨勬渶澶ц鐨勪笅鏍 if(swap==-1||matrixCopy.mat[swap][k]==0) - return -1;//最大主元为0 + return -1;//鏈澶т富鍏冧负0 for(j=0; j=0; i--) @@ -390,7 +404,7 @@ class Matrix } cout<<"uniMatrix"<