中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C++中怎么初始化二維數組

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

這期內容當中小編將會給大家帶來有關C++中怎么初始化二維數組,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

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

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

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("數組第二維數越界");  }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();  }

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

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

向AI問一下細節

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

c++
AI

资讯| 唐河县| 宝坻区| 佛学| 会宁县| 洮南市| 东城区| 龙门县| 海安县| 谢通门县| 桃园县| 铅山县| 饶阳县| 剑河县| 闸北区| 遂平县| 大英县| 平南县| 璧山县| 金昌市| 峨边| 彭水| 合水县| 武强县| 竹北市| 冕宁县| 安宁市| 淮阳县| 桐城市| 长治县| 松潘县| 泗阳县| 金山区| 额敏县| 南召县| 寻甸| 黔江区| 五大连池市| 陆丰市| 玛多县| 辰溪县|