C&C ++動的二次元アレイ

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)。

 

おすすめ

転載: www.cnblogs.com/taoXiang/p/12417302.html