【发布时间】:2016-03-08 03:18:55
【问题描述】:
我目前被困在尝试使用范围基 for 循环来初始化我的数组。
我目前所做的,但它没有在构造函数中使用 C++ 11 数组。构造函数为void,不带参数
//sets everything to flase
for (size_t rowCount = 0; rowCount < NROWS; ++rowCount) {
for (size_t colCount = 0; colCount < NCOLS; ++colCount){
m_Floor[rowCount][colCount] = STARTING_PEN_POSITION;
}
}
到目前为止,我将所有内容都设置为 false(起始笔位置)
for (auto const &row : m_Floor) {
for (auto const &column : row) {
//something = STARTING_PEN_POSITION;
}
}
这个数组在头文件里面
std::array <std::array <bool, NCOLS>, NROWS> m_Floor;
其中 NCOLS 是 size_t 的常量静态值,值为 70
而 NROWS 是 size_t 的常量静态值,值为 22
【问题讨论】:
-
删除
auto之后的const.. -
只是为了确保如果我删除它然后使用代码
m_Floor[row][column] = STARTING_PEN_POSITION;它不起作用,除非我使用 for 循环的语法错误 -
你会做
column = STARTING_PEN_POSITION;,而不是m_Floor[row][column] = STARTING_PEN_POSITION;。或者更合理的是,您可以将column重命名为cell,以明确它是对矩阵中单个单元格的引用。或者为了更加简单,您可以删除内部循环,然后执行for (auto& row : m_Floor) { std::fill(std::begin(row), std::end(row), STARTING_PEN_POSITION); }。 -
感谢您的帮助 我在语法上遇到了很长一段时间的问题,我不知道这会是调用单元格而不是执行 m_Floor 之类的操作