使用指针创建数组

Create an array using a pointer

本文关键字:数组 创建 指针      更新时间:2023-10-16

基本上我想创建一个多维数组使用大小变量传递给我的类,但我不知道如何做到这一点。

我试过了

//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.