bool grid [x][y]
, когда x
и y
не являются constexpr
, делает grid
VLA (массив переменной длины). VLA: s не существуют в стандартном C ++ и доступны только в качестве расширения в некоторых компиляторах. Я предлагаю вам не использовать их. Боковое примечание: вы обычно хотите поменять местами x
и y
, так как массивы хранятся в памяти в основном порядке строк, и доступ к элементам, если вы обращаетесь к ним построчно, вероятно, будет быстрее из-за того, как работают кеши.
Идиоматический способ c - использовать std::vector
.
#include <iostream>
#include <vector>
int main() {
size_t x, y; // a suiteable unsigned type
std::cout << "Enter the dimensions of the array separated by a space: ";
std::cin >> x >> y;
// create a 2D vector, all initialized to "false"
std::vector<std::vector<bool>> grid(y, std::vector<bool>(x, false));
for(size_t yval = 0; yval < grid.size(); ++yval) {
for(size_t xval = 0; xval < grid[yval].size(); ++xval) {
std::cout << grid[yval][xval];
}
std::cout << '\n';
}
}