程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++二維數組new幾種應用方法點評

C++二維數組new幾種應用方法點評

編輯:C++入門知識

C++編程語言中有一種叫做new的二維數組,它的應用方式比較靈活,可以有多種方法來幫助我們實現一些特定功能。在這裡我們將會總結幾種C++二維數組new的應用方式,來進行逐一的點評。

C++二維數組new應用方式一:

  1. A (*ga)[n] = new A[m][n];   
  2. ...   
  3. delete []ga;  

缺點:n必須是已知

優點:調用直觀,連續儲存,程序簡潔(經過測試,析構函數能正確調用)

C++二維數組new應用方式二:

  1. A** ga = new A*[m];   
  2. for(int i = 0; i < m; i++)   
  3. ga[i] = new A[n];   
  4. ...   
  5. for(int i = 0; i < m; i++)   
  6. delete []ga[i];   
  7. delete []ga;  

缺點:非連續儲存,程序煩瑣,ga為A**類型

優點:調用直觀,n可以不是已知

C++二維數組new應用方式三:

  1. A* ga = new A[m*n];   
  2. ...   
  3. delete []ga;  

缺點:調用不夠直觀

優點:連續儲存,n可以不是已知

C++二維數組new應用方式四:

  1. vector > ga;   
  2. ga.resize(m); //這三行可用可不用   
  3. for(int i = 1; i < n; i++) //   
  4. ga[i].resize(n); //   
  5. ...  

缺點:非連續儲存,調試不夠方便,編譯速度下降,程序膨脹(實際速度差別不大)

優點:調用直觀,自動析構與釋放內存,可以調用stl相關函數,動態增長

C++二維數組new應用方式五:

  1. vector ga;   
  2. ga.resize(m*n);  

方法3,4的結合

C++二維數組new應用方式六:

2的改進版

  1. A** ga = new A*[m];   
  2. ga[0] = new A[m*n];   
  3. for(int i = 1; i < m; i++)   
  4. ga[i] = ga[i-1]+n;  

優點:連續存儲,n可以不是已知,析構方便,猜想只需delete [] ga;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved