c++ - 如何仅使用其中一个维度在 2D 向量中插入值?
问题描述
我正在搜索如何在 2D 向量中插入值,我找到了一个非常简单的答案。
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
int value;
std::cout << "Value for 2D array at pos(" << i + 1 << ", " << j + 1 << "): ";
std::cin >> value;
arr[i].push_back(value); //<- the answer I found
}
}
我有点困惑,因为如果我只给出 i,我怎么能在 (i,j) 中插入一个数字?即使我在推回价值时没有声明它,j 是否在幕后行事?
解决方案
您正在向数组数组添加值。
(arr[i])
实际上是一个数组本身。每个i
代表一行,每个j
代表一列。第一个 for 循环遍历行,第二个 for 循环遍历列(我相信您知道这一点)。如果你想这样想的话,arr[i].push_back(value)
实际上是在增加价值。arr[i][j]
第一个 push_back 为 增加值arr[i][0]
,第二个为 增加值arr[i][1]
,依此类推。例如,如果您有一个 0 的二维数组,您将使用arr[i][j]
. 在这种情况下您不使用它的唯一原因是因为如果您引用arr[i][j]
,您将得到一个超出范围的异常,因为索引j
尚不存在(push_back 创建它)。我希望这是有道理的。我认为解释比代码更有意义,因为您已经有了正确的代码并且只需要解释。
推荐阅读
- python - 执行简单循环时Python中的意外输出
- python - openLCA:创建包含规范化的设置
- powershell - Powershell查找文件夹中的所有文件不受密码保护的ZIP并删除它们
- python - 熊猫将许多列分组为一列,其中每个单元格都是值列表
- python - 使用 for 循环将数据写入 JSON 文件
- haskell - 在预定义的访问者模式迭代器中提取/累积结果的“Haskell 方式”
- node.js - Ghostscript PDF TO Image 转换日志消息
- flask - 在 Flask Web App 中刷新 Salesforce 访问令牌
- visual-studio - 在另一个 IDE 中构建 C++ Visual Studio 项目:致命错误 afxwin.h
- git - git push 返回缺少或无效的凭据。代码:'ECONNREFUSED',远程:找不到存储库