c 用動態建立二維陣列的幾種方法

2021-05-27 14:29:25 字數 1785 閱讀 1600

我們在這篇文章中將會為大家總結幾種c++二維陣列new的常用方法,並對此進行詳細的點評,讓大家充分了解其中的優缺點。

ad:

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

c++二維陣列new應用方式一:

a (*ga)[n] = new a[m][n];   

...   

delete ga;  

缺點:n必須是已知

優點:呼叫直觀,連續儲存,程式簡潔(經過測試,析構函式能正確呼叫)

c++二維陣列new應用方式二:

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;  

缺點:非連續儲存,程式煩瑣,ga為a**型別

優點:呼叫直觀,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;   

ga.resize(m*n);  

方法3,4的結合

c++二維陣列new應用方式六:

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;  

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

建立型別為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 在某一行...