建立二維陣列的方法(隨時更新)

2021-06-15 20:49:31 字數 1581 閱讀 1991

對於常規的方法:t [n][n]的方法我就不說了。首先介紹兩個動態的建立方法,然後介紹一下c++標準的中使用stl的容器vector建立二維陣列的方法。

1.

定義:

const int row = 3;

int  size = 5;

int  (*pi)[row] = new int[size][row];

操作方法:

int  k = 0;

cout <

記憶體釋放:

delete pi;

缺點:low必須是已知。

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

2.

定義:

int** ppi = new int*[size];

for ( i=0; i

操作方法:

cout <

記憶體釋放:

for ( i=0; i

缺點:非連續儲存,記憶體釋放煩瑣,雙重指標。

優點:呼叫直觀,size可以不是已知

由於stl的容器都支援動態增長,可以隨時使用vector.resize()來改變容器的容量,所以使用vector建立的陣列就具有動態建立的特性。

3.

定義:

vector< vector>   ivec( 10 );//指定行的數量

操作方法:

//初始化

vector< vector>::iterator iiter = ivec.begin();

vector< int >::iterator   iter;

for ( int i=0; iiter!=ivec.end(); ++iiter )

}//輸出

cout <<"ivec : " end(); ++iter )

{cout <

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

優點:呼叫直觀,自動析構與釋放記憶體,可以呼叫stl相關函式,動態增長。

還可以使用以下的定義指定二維陣列的行數和列數:

vector< vector>   ivec2( 10, vector(10) );

除此以外,我還在網上看到過以下這樣的二級陣列的定義,但對於我個人來說,這些所謂的二維陣列只是一些所謂的一維陣列(我這裡強調「所謂」,是想說明,無論是多少維的陣列,記憶體的儲存結構都是一維的線性儲存,只是以我們人的邏輯,拿[ ]和[ ][ ]加以區分而已),所以只提供了解!

t* ga = new t[m*n];

...

delete ga;

vectorga;

ga.resize(m*n);

建立二維陣列的方法(隨時更新

對於常規的方法 t n n 的方法我就不說了。首先介紹兩個動態的建立方法,然後介紹一下c 標準的中使用stl的容器vector建立二維陣列的方法。1.定義 const int row 3 int size 5 int pi row new int size row 操作方法 int k 0 cout...

建立二維陣列的方法選擇

參考資料 今天搜尋看見milo yip的知乎回答,講解c語言幾種二維陣列的建立方法及優劣。這裡總結分享一下。如果二維陣列長度一定,最簡單的方法也最有效 const size t m 10,n 20 size t 一般為 unsigned long long const 宣告常量避免 magic nu...

new動態建立二維陣列的方法

1.a ga n new a m n delete ga 缺點 n 必須是已知 優點 呼叫直觀,連續儲存,程式簡潔 經過測試,析構函式能正確呼叫 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 d...