溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么初始化二維數(shù)組

發(fā)布時間:2021-07-20 13:53:30 來源:億速云 閱讀:268 作者:Leah 欄目:編程語言

這期內(nèi)容當中小編將會給大家?guī)碛嘘PC++中怎么初始化二維數(shù)組,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

C++的二維數(shù)組是不能用變量初始化的,像下面的代碼肯定是編譯不通過的:

int i=5;  int j=4;  int a[i][j];

像這樣的代碼肯定是很多C++像我一樣的初學者的困感,如果數(shù)組是在編譯的階段確定其內(nèi)存位置的,而變量不能作為數(shù)組的維數(shù).下面,用一個模板類,完成這種C++二維數(shù)組初始化的功能

template< class T> class Array2D{  private:  T* pData;  int dim1;  int dim2;  int dim1Index;  class Array1D{  private:  int length;  T* start;  public:  Array1D(T* start,int length):length(length),start(start){}  T& operator[](int index){  if(index>length){  throw out_of_range("數(shù)組第二維數(shù)越界");  }else{  return *(start+index);  }  }  };  public:  Array2D(int dim1,int dim2){  this->dim1dim1=dim1;  this->dim2dim2=dim2;  int size=dim1*dim2;  pData=new T[size];  }  Array1D operator[](int index){  return Array1D(pData+index*dim1,dim2);  }  void print(){  for(int i=0;i< dim1;i++){  for(int j=0;j< dim2;j++){  cout< < *(pData+dim1*i+j)< < " ";  }  cout< < endl;  }  }  };  int main(){  int index1=2;  int index2=2;  Array2D< int> test(index1,index2);  test[0][0]=1;  test[0][1]=2;  test[1][0]=3;  test[1][1]=4;  test.print();  }

用一個模板類實現(xiàn)這個功能,是C++二維數(shù)組初始化中一個不錯的選擇,但在實際中,是很少有人這樣寫的,這是在more effective C++給出的方法,目的是為了說明proxy模式,Array1D是作為一個proxy類存在的。

上述就是小編為大家分享的C++中怎么初始化二維數(shù)組了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

c++
AI