二維數(shù)組new小結(jié)
1.
A (*ga)[n] = new A[m][n];
...
delete []ga;
缺點:n必須是已知
優(yōu)點:調(diào)用直觀,連續(xù)儲存,程序簡潔(經(jīng)過測試,析構(gòu)函數(shù)能正確調(diào)用)
2. A** ga = new A*[m];
for(int i = 0; i < m; i++)
ga[i] = new A[n];
...
for(int i = 0; i < m; i++)
delete []ga[i];
delete []ga;
缺點:非連續(xù)儲存,程序煩瑣,ga為A**類型
優(yōu)點:調(diào)用直觀,n可以不是已知
3. A* ga = new A[m*n];
...
delete []ga;
缺點:調(diào)用不夠直觀
優(yōu)點:連續(xù)儲存,n可以不是已知
4. vector > ga;
ga.resize(m); //這三行可用可不用
for(int i = 1; i < n; i++) //
ga[i].resize(n); //
...
缺點:非連續(xù)儲存,調(diào)試不夠方便,編譯速度下降,程序膨脹(實際速度差別不大)
優(yōu)點:調(diào)用直觀,自動析構(gòu)與釋放內(nèi)存,可以調(diào)用stl相關(guān)函數(shù),動態(tài)增長
5. vector ga;
ga.resize(m*n);
方法3,4的結(jié)合
6. 2的改進版
A** ga = new A*[m];
ga[0] = new A[m*n];
for(int i = 1; i < m; i++)
ga[i] = ga[i-1]+n;
優(yōu)點:連續(xù)存儲,n可以不是已知,析構(gòu)方便,猜想只需delete [] ga;
問題:
1.怎么進行多維數(shù)組的聲明和初始化?
2.是否能夠動態(tài)分配多維數(shù)組,怎么樣正確析構(gòu)?
3.怎么理解這些操作?
拋出問題,本周搞定.