1.動的二次元アレイ
目的:m行n列の行列構成を容易にします
2. Aの簡単な実現
関数テンプレートを記述するためにここに
C ++コンパイラの分離機能テンプレートは、宣言がファイルに書かれている実装する必要があり、サポートされていません。
myarray.h:
1 #ifndefのTESTCPLUS_MYARRAY_H 2 の#define TESTCPLUS_MYARRAY_H 。3 。4の#include <入出力ストリーム> 5。 使用した 名前空間STD; 6。テンプレート<型名T> 7。 / * 8。 機能:malloc関数宇宙用途部分的な成功、部分的な失敗、成功した回収部 9 * / 10 静的 ボイド freePartMatrix(T ** PARY、int型I) 11。 { 12である ため(INT J = I- 1。 ; J> = 0 ; J、){ 13は IF(!PARY [J] = nullptr A){ 14 無料(PARY [J]); 15 PARY [J] = nullptr A; 16 } 17 } 18は、 フリー(PARY); 19 } 20は、 / * 21れる 機能:m行n列の2次元アレイ、又はm行nを求めます行列の列 22 関数テンプレート 23がある * / 24テンプレート<型名T> 25 T ** getMNMatrix(INT M、INT N-) 26である { 27 IF(M < 1。 || N-< 1。){ 28 リターンnullptr; 29 } 30 T ** PARY =nullptr; 31 PARY =(T **)はmalloc(M * はsizeof(T * ))。 32 であれば(PARY == nullptr){ 33 リターンnullptr。 34 } 35 のために(INTは iは= 0 ; I <M; ++ I){ 36 PARY [I] =(T *)はmalloc(N * はsizeof (T))。 37 であれば(PARY [I] == nullptr){ 38 freePartMatrix(PARY、I)。 39 PARY = nullptr。 40 リターンnullptr; 41 } 42 のmemset(PARY [i]は、0、N * はsizeof (T))。 43 } 44 リターンPARY。 45 } 46 47テンプレート<型名T> 48 空隙 print_matrix(T **進、整数 M、INT n)の 49 { 50 であれば(進== nullptr){ 51 COUT << " 空行列" << ENDL。 52 } 53 のための(INTは私= 0 ; I <M; ++ I){ 54 のために(INT J = 0 ; nはJ <; ++ J){ 55 COUT <<進[I] [J] << " " 。 56 } 57 COUT << " \ n " 。 58 } 59 } 60 #endifの // TESTCPLUS_MYARRAY_H
myarray.cpp
1つの#include " myarray.h "
main.cppに
1 int型M、N。 2 CIN >> M >> N。 3 INT **配列= getMNMatrix < 整数 > (M、N)。 4 print_matrix < 整数 >(アレイ、M、N)。