[英]Passing a 3-dimensional variable size array by reference in C++
我一直在研究將2D數組傳遞給C ++函數 ,以及其他一些類似的文章。 但是,我遇到了一個問題,其中我正在創建的數組具有兩個尺寸可變的維。
初始化看起來像:
int** mulePosition;
mulePosition = new int *[boardSize][boardSize][2];
該函數如下所示:
int moveMule (int boardSize, int ***mulePosition)
和引用看起來像
moveMule (boardSize, mulePosition)
Boardsize是在函數的開頭定義的,但每次執行可能會更改。 適當大小的數組應為int [boardSize] [boardSize] [2]。
通過以下方式使用普通的“ 3維”數組
int* mulePosition = new int[boardsize*boardsize*2];
並從開始計算地址以計算偏移量:mulePosition [a] [b] [c]是mulePosition[boardSize*2*a + 2*b + c]
,
或使用arrays的arrays數組(這將對應於您的int***
聲明)或vectors的vectors的更好(或更簡單)的vectors,盡管初始化會稍微復雜一些(您將需要初始化每個array / vector )。
既可以使用一個std::vector<std::vector<int>>
如果boardSize不是const或std::array<std::array<boardSize>, boardSize>
參見多維的std ::陣列為如何初始化std :: array)。
話雖如此,將其隱藏在提供良好界面的類Board中似乎是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.