簡體   English   中英

在C ++中通過引用傳遞3維可變大小數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM