眾所周知,創(chuàng)建一維動態(tài)數(shù)組很容易,使用下面的代碼便可以輕松創(chuàng)建
int *Array=new int[10];//Add some code here;delete [] Array;但是,如果遇到動態(tài)的二維數(shù)組應(yīng)當(dāng)如何創(chuàng)建呢?這里給出3中方法: 方法一:用一維數(shù)組去模仿二維數(shù)組,由于無論何種類型的動態(tài)數(shù)組,其在內(nèi)存中都是線性的,所以可以用一維數(shù)組去模擬。 優(yōu)點:處理簡單,加上一個轉(zhuǎn)換函數(shù)就可以實現(xiàn),管理容易。 缺點:不直觀。
int length,width;int *Array=new int [length*width];//Add some code heredelete Array;方法二:先創(chuàng)建一排指針,再依次申請內(nèi)存。 優(yōu)點:較為直觀,管理方便。 缺點:必須知道行數(shù)或列數(shù)。
int width;int *Pointer[10];for(int i=0;i<10;i++){ Pointer[i]=new int [width];}//Add some code herefor(int i=0;i<10;i++){ delete [] Pointer[i];}方法三:用二級指針申請一維動態(tài)指針數(shù)組,再一次申請。(該過程申請到的內(nèi)存單元連續(xù)) 優(yōu)點:直觀,使用方便。 缺點:創(chuàng)建、銷毀都比較麻煩,需要逐層銷毀。
int length,widthlint **Poniter=new int*[length];for(int i=0;i<length;i++){ Pointer[i]=new int[width];}//Add some code here;for(int i=0;i<10;i++){ delete [] Poniter[i];}delete [] Pointer;新聞熱點
疑難解答