c++ - C ++中具有可变尺寸的二维数组
问题描述
所以我正在自学 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
适合您。它很像一个数组,但更方便,更适合这个目的。您可以使用此初始化程序调用简单地初始化嵌套向量的 2D 数组(感谢 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
此处的文档。
推荐阅读
- c - 创建动态多维指针数组时出现运行时错误 (char**)
- r - 使用管道运算符将数据转换为 data.frame
- blazor - Blazor:在 httpClient 执行 GET 请求时将按钮更改为微调器
- soapui - 检查 SOAP UI 浏览器窗口的元素或页面源
- python - 转换为 32 位整数后,Cython 函数中神秘地翻转了位
- javascript - Firebase“值”返回重复值
- c# - ESP8266 服务器与 C# 客户端 WinForm 应用程序之间的 TCP/IP 通信
- ruby - 如何关闭 Unicorn 中的错误详细信息?
- javascript - 如何编写正则表达式来替换某些单词并在 JavaScript 中缺少时添加“”。意外行为
- c# - C# Specflow - 未调用 BeforeScenario 挂钩并且驱动程序为空