【发布时间】:2017-05-12 02:12:23
【问题描述】:
我正在尝试找到一种有效且正确的方法来用 enum 值填充 2D std::array 矩阵。我正在这样做:
#include <iostream>
#include <array>
template<class T, size_t ROW, size_t COL>
using Matrix = std::array<std::array<T, COL>, ROW>;
enum class State { FREE = 0, BUSY, BLOCKED, RESERVED };
int main() {
const int mapX = 4;
const int mapY = 9;
// create a 5x10 2D array
Matrix<State, mapY, mapX> MapMatrix;
// fill array with State::RESERVED value
for (int y = 0; y <= mapY; y++) MapMatrix[y].fill(State::RESERVED);
std::cout << "MapMatrix contains:\n";
for (int y = 0; y <= mapY; ++y) {
for (int x = 0; x <= mapX; ++x) {
std::cout << static_cast<int>(MapMatrix[x][y]) << " ";
}
std::cout << std::endl;
}
return 0;
}
for 循环我正在做用enum 值填充矩阵的最佳方法吗?有没有办法在Matrix<State, mapY, mapX> MapMatrix的声明期间填充矩阵(像构造函数一样)?
谢谢!
【问题讨论】:
标签: c++ arrays enums c++14 stdarray