您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關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++中怎么初始化二維數組了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。