這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)C++中怎么初始化二維數(shù)組,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)10余年來(lái)致力于為客戶(hù)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了數(shù)千家網(wǎng)站,包括各類(lèi)中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
C++的二維數(shù)組是不能用變量初始化的,像下面的代碼肯定是編譯不通過(guò)的:
int i=5; int j=4; int a[i][j];
像這樣的代碼肯定是很多C++像我一樣的初學(xué)者的困感,如果數(shù)組是在編譯的階段確定其內(nèi)存位置的,而變量不能作為數(shù)組的維數(shù).下面,用一個(gè)模板類(lèi),完成這種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(); }
用一個(gè)模板類(lèi)實(shí)現(xiàn)這個(gè)功能,是C++二維數(shù)組初始化中一個(gè)不錯(cuò)的選擇,但在實(shí)際中,是很少有人這樣寫(xiě)的,這是在more effective C++給出的方法,目的是為了說(shuō)明proxy模式,Array1D是作為一個(gè)proxy類(lèi)存在的。
上述就是小編為大家分享的C++中怎么初始化二維數(shù)組了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁(yè)名稱(chēng):C++中怎么初始化二維數(shù)組
文章源于:http://www.rwnh.cn/article40/psjdho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、定制開(kāi)發(fā)、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)