c++ - C++中具有可变尺寸的二维数组

标签 c++ arrays multidimensional-array

所以我自学C++,对数组有疑问。我知道如果我像这样声明一个二维数组:

char board[8][8];

我创建了一个高度和宽度为 8 的二维数组。但是,我想知道是否有办法将这些尺寸设置为变量,以便用户可以输入他们想要的高度和宽度,我在 C++ 中试过这个visual studio 不高兴。

int rowSize = 0;  
int colSize = 0;
cin >> rowSize >> colSize;
char board[rowSize][colSize];

谁能帮帮我?

最佳答案

因为这是用 c++ 标记的,也许 std::vector 适合你。它很像一个数组,但更方便,也更适合这个目的。您可以使用此初始化程序调用简单地初始化嵌套 vector 的二维数组(感谢 Bob__ 提供了这个更简单的解决方案):

int n = 5;
int m = 10;
std::vector<std::vector<char>> board (n, std::vector<char>(m, 'a'));

根据示例,这将创建板并将所有字段初始化为 'a'。您可以使用与 C 样式数组相同的语法访问和操作数据:

char x = board[4][2];
board[3][3] = 'o';

最后但并非最不重要的一点是,有许多方便的特性和函数可以让您比使用 C 风格的数组更容易地执行诸如复制之类的操作。查看 std::string 的文档 here .

关于c++ - C++中具有可变尺寸的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52703919/

相关文章:

java - 注解参数: explicit vs.隐式String数组

arrays - 如何重置 3 维矩阵的 'lower triangle'

c++ - 未定义对静态成员中类静态成员的引用

c++ - C++ 的可观察容器

python - 为什么 Cython 比向量化的 NumPy 慢?

java - 如何在没有绑定(bind)异常的情况下打印一维数组中的额外元素?

Perl foreach 循环遍历一个矩阵行

java - 在 Java 中组织 2D 整数数组

使用原始类型重载 C++ 运算符

c++ - 理解 std::future::then 的延续