使用指针创建数组

时间:2013-06-02 00:30:14

标签: c++

基本上我想使用传递给我的类的大小变量来创建一个多维数组,但我不知道该怎么做。

我已经尝试过了

//Class header
Tile * gameTile;

//Class cpp
gameTile = new Tile[size][size];

它不介意new Tile[size]但不介意[size][size]。这是为什么?

4 个答案:

答案 0 :(得分:4)

失败,因为只有已分配数组的第一维可能具有动态大小。要克服此限制,您可以使用二维向量:

std::vector<std::vector<Tile> > gameTile(size, std::vector<Tile>(size));

答案 1 :(得分:1)

在Vlad提及的链接中,您可以使用向量,或者对于更快的内容,您可以使用以下代码初始化bidimentional数组:

int i;
int ** intTile;
intTile = new  int*[5];

for (i = 0; i < 5; i++) {
    intTile[i] = new int[5];
}

答案 2 :(得分:0)

你可以做到

Tile *gameTile = &((new Tile[size][size])[0][0]);

这会将你的多维数组中第一个元素的地址存储到gameTile。

答案 3 :(得分:0)

虽然你想使用二维数组,但我只想指出你是否也可以使用一维数组来达到目的。如果尺寸大小符合尺寸,您可以:

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];