gpt4 book ai didi

c++ - 如何在 C++ 中使用传入的值作为数组索引?

转载 作者:行者123 更新时间:2023-11-30 02:00:32 26 4
gpt4 key购买 nike

所以我正在尝试通过创建一个基本的国际象棋游戏来学习 C++。由于增加了皱纹,用户可以创建非标准尺寸的板(即不一定是 8x8)

一旦我从用户那里收到电路板的尺寸,我应该设置为以固定尺寸创建它。所以我想在这里使用数组。

虽然编译器不喜欢我的声明:

 tile arrayOfTiles[numX][numY];

它似乎告诉我它想要一个常量作为数组索引。这是我什至可以用数组做的事情吗?

class gameBoard{
public:
gameBoard(int x=8, int y=8)
: numX(x),
numY(y)
{
//construct board
tile arrayOfTiles[numX][numY];

/*
for (int i=0; i<numX; i++) {
for (int j=0; j<numY; j++){
arrayOfTiles[i][j]=tile();
}
}
*/
}

protected:
int numX; //total number of rows, typically 8 (A-H) on a chessboard
int numY; //total number of columns, typically 8 (1-8) on a chessboard

};

最佳答案

使用std::vector:

std::vector<std::vector<tile>> arrayOfTiles(numX, std::vector<tile>(numY));

使用 typedef 来简化它:

typedef std::vector<tile>  vectiles;

std::vector<vectiles> arrayOfTiles(numX, vectiles(numY));

vectiles 是 tile 的 vector ,arrayOfTilesvectiles 的 vector 。您可以将其视为二维数组。

for(size_t i = 0 ; i < numX; ++i)
{
for(size_t j = 0 ; j < numY; ++j)
//use arrayOfTiles[i][j]
}

您可以使用 arrayOfTiles.size()arrayOfTiles[i].size() 而不是 numXnumY 分别。

关于c++ - 如何在 C++ 中使用传入的值作为数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com