我們在這篇文章中將會為大家總結幾種c++二維陣列new的常用方法,並對此進行詳細的點評,讓大家充分了解其中的優缺點。
ad:
c++程式語言中有一種叫做new的二維陣列,它的應用方式比較靈活,可以有多種方法來幫助我們實現一些特定功能。在這裡我們將會總結幾種c++二維陣列new的應用方式,來進行逐一的點評。
c++二維陣列new應用方式一:
a (*ga)[n] = new a[m][n];缺點:n必須是已知...
delete ga;
優點:呼叫直觀,連續儲存,程式簡潔(經過測試,析構函式能正確呼叫)
c++二維陣列new應用方式二:
a** ga = new a*[m];缺點:非連續儲存,程式煩瑣,ga為a**型別for(int i = 0; i <
m; i++)
ga[i] = new a[n];
...
for(int i = 0; i <
m; i++)
delete ga[i];
delete ga;
優點:呼叫直觀,n可以不是已知
c++二維陣列new應用方式三:
a* ga = new a[m*n];缺點:呼叫不夠直觀...
delete ga;
優點:連續儲存,n可以不是已知
c++二維陣列new應用方式四:
vector > ga;缺點:非連續儲存,除錯不夠方便,編譯速度下降,程式膨脹(實際速度差別不大)ga.resize(m); //這三行可用可不用
for(int i = 1; i <
n; i++) //
ga[i].resize(n); //
...
c++二維陣列new應用方式五:
vector ga;方法3,4的結合ga.resize(m*n);
c++二維陣列new應用方式六:
2的改進版
a** ga = new a*[m];優點:連續儲存,n可以不是已知,析構方便,猜想只需delete ga;ga[0] = new a[m*n];
for(int i = 1; i <
m; i++)
ga[i] = ga[i-1]+n;
建立型別為type的動態工作陣列,這個陣列有rows行和cols列。
template void make2darray(type** &x,int rows, int cols)
{
x=new type*[rows];
for (int i=0;i
當不再需要乙個動態分配的二維陣列時,可按以下步驟釋放它所占用的空間。首先釋放在for迴圈中為每一行所分配的空間。然後釋放為行指標分配的空間。
template void delete2darray(type** &x,int rows)
{ for (int i=0;i
釋放空間後將x置為0,以防繼續訪問已被釋放的空間.
c 建立二維陣列的幾種方法
1 用new申請一塊記憶體空間存放二維陣列 includeusing namespace std int main int argc,char argv int n 10,m 2 int swp 動態申請二維陣列 n行 m列 swp new int n for int i 0 i2 用變數定義二維陣...
c 建立二維陣列的幾種方法
1 用new申請一塊記憶體空間存放二維陣列 include using namespace std int main int argc,char ar int n 10,m 2 int swp 動態申請二維陣列 n行 m列 swp new int n for int i 0 i2 用變數定義二維陣列...
C 用vector 動態建立二維陣列
建立 vectorw 10,1 w width 即列數 vector vector arr 9,w 9行10列 二維陣列注意 用一維陣列給二維陣列賦值時,兩個 要隔開 賦值 可直接賦值 arr i j 1 新增元素 在最後一行下面新增一行 arr.push back vector 10,1 在某一行...