使用指针创建数组
Create an array using a pointer
基本上我想创建一个多维数组使用大小变量传递给我的类,但我不知道如何做到这一点。
我试过了
//Class header
Tile * gameTile;
//Class cpp
gameTile = new Tile[size][size];
它不介意new Tile[size]
,但不介意[size][size]
。为什么会这样?
这是失败的,因为只有分配数组的第一个维度可以有动态大小。为了克服这个限制,您可以使用二维矢量:
std::vector<std::vector<Tile> > gameTile(size, std::vector<Tile>(size));
就像Vlad提到的链接一样,您可以使用向量,或者为了更快,您可以使用以下代码初始化二维数组:
int i;
int ** intTile;
intTile = new int*[5];
for (i = 0; i < 5; i++) {
intTile[i] = new int[5];
}
虽然您希望使用二维数组,但为了完整起见,我只想指出您也可以使用一维数组。如果它是尺寸大小的大小,你有:
gameTile = new Tile[size*size];
//now gameTile[y][x] becomes:
Tile t = gameTile[x + y*size];
//if array is not square
gameTile = new Tile[width*height];
//now gameTile[y][x] becomes:
Tile t = gameTile[x + y*width];
你可以做
Tile *gameTile = &((new Tile[size][size])[0][0]);
将多维数组中第一个元素的地址存储到gameTile.
相关文章:
- 在c++中为double类型的数组创建一个unique_ptr
- 如何从预定义的数组创建某些元素数组
- 基于数组的列表 - 动态数组创建时出错
- 从 UTF-8 字节数组创建字符串?
- 是否可以在并行区域中为共享 2D 数组创建选定元素的线程本地副本?(共享,私有,障碍:OPenMP)
- C++ 从名称数组创建对象
- 从数组创建 Mat 时,'cv::Mat' 和 'int' 类型不兼容
- 从 std::数组创建十六进制代表
- 在 C++ 结构内声明的数组 A[1] 创建多个实例
- 为多维数组创建内存空间
- 如何使用任何类型的数组创建模板类并为其设置值?
- 从字符串数组创建一个字符数组
- 是否可以在不为该数组创建变量的情况下将数组作为参数传递到函数中?
- 使用类定义数组创建C++类
- 使用具有唯一随机数的结构数组创建多个对象
- 谷歌测试:无法从字符数组创建字符串
- 从 1D 数组创建 2D 数组
- 无法通过一个单向链表数组创建邻接列表
- 如何使用数组创建标准::函数
- 在C++中,返回从本地字符数组创建的字符串是否会导致内存泄漏或未定义的行为