获取用于 for 循环的数组大小
Get array size for use in for loop
我正在尝试获取我的 tiles 数组的大小,以便它可以在下面的 for 循环中使用。然而,在编译时,它表明 .size() 在 C++ 2011 中是实验性的。获得与检查每个图块的 'E' 字符的循环相关的大小的最佳方法是什么?我使用的是数组而不是向量,所以请帮助我处理数组。
void Floor::placePlayer()
{
bool foundEntry = false;
int entryX;
int entryY;
for (int x = 0; x < tiles.size() && !foundEntry; x++)
{
for (int y = 0; y < tiles[x].size() && !foundEntry; y++)
{
if (tiles[x][y] == 'E')
{
player.set_position (x,y);
tiles[x][y] = 'P';
}
}
}
}
这也是我来自 header 的数组:
const static int ROWS = 20;
const static int COLS = 30;
char tiles[ROWS][COLS];
感谢您的帮助!
你为什么不使用你用来创建数组的const static int
?
void Floor::placePlayer()
{
bool foundEntry = false;
int entryX;
int entryY;
for (int x = 0; x < ROWS && !foundEntry; x++)
{
for (int y = 0; y < COLS && !foundEntry; y++)
{
if (tiles[x][y] == 'E')
{
player.set_position (x,y);
tiles[x][y] = 'P';
}
}
}
}
你可以使用
for (int x = 0; x < sizeof(tiles)/sizeof(char*) && !foundEntry; x++)
和
for (int y = 0; y < sizeof(tiles[x])/sizeof(char) && !foundEntry; y++)
在 C++ 中,您可以使用以下函数来计算 C 风格数组中元素的数量:
template<typename T, size_t N>
size_t lengthof( T (&arr)[N] ) { return N; }
那么循环将是:
for (size_t x = 0; x < lengthof(tiles) && !foundEntry; x++)
for (size_t y = 0; y < lengthof(tiles[x]) && !foundEntry; y++)
这比对值进行硬编码更安全,因为那样的话,如果您稍后更改数组的大小,您的循环将开始静默访问错误数量的元素。
我正在尝试获取我的 tiles 数组的大小,以便它可以在下面的 for 循环中使用。然而,在编译时,它表明 .size() 在 C++ 2011 中是实验性的。获得与检查每个图块的 'E' 字符的循环相关的大小的最佳方法是什么?我使用的是数组而不是向量,所以请帮助我处理数组。
void Floor::placePlayer()
{
bool foundEntry = false;
int entryX;
int entryY;
for (int x = 0; x < tiles.size() && !foundEntry; x++)
{
for (int y = 0; y < tiles[x].size() && !foundEntry; y++)
{
if (tiles[x][y] == 'E')
{
player.set_position (x,y);
tiles[x][y] = 'P';
}
}
}
}
这也是我来自 header 的数组:
const static int ROWS = 20;
const static int COLS = 30;
char tiles[ROWS][COLS];
感谢您的帮助!
你为什么不使用你用来创建数组的const static int
?
void Floor::placePlayer()
{
bool foundEntry = false;
int entryX;
int entryY;
for (int x = 0; x < ROWS && !foundEntry; x++)
{
for (int y = 0; y < COLS && !foundEntry; y++)
{
if (tiles[x][y] == 'E')
{
player.set_position (x,y);
tiles[x][y] = 'P';
}
}
}
}
你可以使用
for (int x = 0; x < sizeof(tiles)/sizeof(char*) && !foundEntry; x++)
和
for (int y = 0; y < sizeof(tiles[x])/sizeof(char) && !foundEntry; y++)
在 C++ 中,您可以使用以下函数来计算 C 风格数组中元素的数量:
template<typename T, size_t N>
size_t lengthof( T (&arr)[N] ) { return N; }
那么循环将是:
for (size_t x = 0; x < lengthof(tiles) && !foundEntry; x++)
for (size_t y = 0; y < lengthof(tiles[x]) && !foundEntry; y++)
这比对值进行硬编码更安全,因为那样的话,如果您稍后更改数组的大小,您的循环将开始静默访问错误数量的元素。