Re: [問題] 如何動態的宣告一個2維矩陣
※ 引述《CS1DADA (CS1DADA)》之銘言:
: 問題(Question):
: 我有一個矩陣要宣告成全域變數
: 但是這個矩陣要讀檔後才能知道他的大小
: 請問要怎宣告?
template <typename T>
T **alloc_2D_array(int width, int height)
{
T **arr = (T **)calloc(height, sizeof(T *));
if (arr == NULL)
exit(1);
arr[0] = (T *)calloc(width*height, sizeof(T));
if (arr[0] == NULL)
exit(1);
for (int j = 1; j < height; ++j)
arr[j] = arr[j - 1] + width;
return arr;
}
template <typename T>
void free_2D_array(T **arr)
{
free(arr[0]);
free(arr);
return;
}
int **graphic; //global
int main()
{
graphic = alloc_2D_array<int>(1024, 768);
...
...
...
...
free_2D_array(graphic);
return 0;
}
概念上大概就是這樣
用 malloc 或 new 去做也可以
主要要小心的關鍵點是
別把第二層 allocate memory 的動作放到迴圈裡面去
不然效能會有差
--
琴劍六記 百萬字武俠長篇連載
http://gs.cathargraph.com
直接閱讀《琴劍六記》
http://gs.cathargraph.com/p/list.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.2.114
※ 編輯: pnpncat 來自: 219.84.2.114 (12/20 15:46)
→
12/20 15:54, , 1F
12/20 15:54, 1F
→
12/20 15:56, , 2F
12/20 15:56, 2F
→
12/20 15:56, , 3F
12/20 15:56, 3F
討論串 (同標題文章)