通过引用传递 3 维可变大小数组 C++
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)
板大小在函数的开头定义,但可能会在每次执行时更改。大小合适的数组将是 int [boardSize][boardSize][2]。
要么通过以下方式使用普通的"三维"数组
int* mulePosition = new int[boardsize*boardsize*2];
并解决其元素计算从开头开始的偏移量:mulePosition[a][b][c] 是mulePosition[boardSize*2*a + 2*b + c]
,
或者使用数组的数组数组(对应于你的int***
声明)或更好(和更简单)的向量向量向量,尽管初始化会稍微复杂一些(你需要初始化每个数组/向量)。
如果 boardSize 不是 const 或 std::array<std::array<boardSize>, boardSize>
,请使用 std::vector<std::vector<int>>
(有关如何初始化 std::array 的信息,请参阅 Multidimensional std::array)。
话虽如此,将其隐藏在提供漂亮界面的类板中看起来是个好主意。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 将 int 数组转换为带有小数C++的双精度数组
- 如何将大括号初始值设定项用于动态大小数组和新数组?
- 对未知大小数组的引用的列表初始化:它是否应该推断数组大小?
- 返回指向固定大小数组C++的数组的指针
- 如何将小数数组转换为二进制数数组
- 对指向固定大小数组的指针数组的内存分配的解释
- 在 C++ 中创建固定大小的 int 数组的动态大小数组