2010-05-06 116 views
1

比方說,我有這種動態創建多維數組:C++多維動態數組

int* *grid = new int*[gridSizeX]; 

for (int i=0; i<gridSizeX; i++) { 
    grid[i] = new int[gridSizeY]; 
} 

不應該是可能的現在訪問像柵格[X] [Y] = 20個元素?

+2

是的。 {假設'x'在[0,'gridSizeX'內,'y'在[0,'gridSizeY'內)}}我推薦你使用'std :: vector'來爲你管理內存。 – GManNickG 2010-05-06 01:31:01

+0

讓我們看看這裏,在相關的鏈接,我們發現http://stackoverflow.com/questions/1024772/dynamic-multidimensional-array和http://stackoverflow.com/questions/799373/array-of-pointers-to-multidimensional -arrays和http://stackoverflow.com/questions/1584100/converting-multidimensional-arrays-to-pointers-in-c還有其他人:我已經回答了至少三個版本的這許多衛星前。 – dmckee 2010-05-06 01:45:13

+0

AraK在這裏回答了類似的廣泛問題:http://stackoverflow.com/questions/1946830/multidimensional-variable-size-array-in-c – 2010-05-06 02:13:55

回答

3

是的,這應該很好。

但是......你可能要考慮使用標準集裝箱,而不是手動管理內存:

typedef std::vector<int> IntVec; 
typedef std::vector<IntVec> IntGrid; 
IntGrid grid(gridSizeX, IntVec(gridSizeY)); 

grid[0][0] = 20; 
0

是 - 但在C/C++中,它會被佈置爲電網[Y] [X]。

+0

對不起 - 我的意思是它將在內存中作爲網格[y] [ X]。並且同意gf - 在C++中你可能想要使用標準容器,因爲你可以檢查它們的.size(),並避免任何漏洞。 – nevelis 2010-05-06 01:35:43