首页 > 解决方案 > 如何仅使用其中一个维度在 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 是否在幕后行事?

标签: c++multidimensional-array

解决方案


您正在向数组数组添加值。 (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 创建它)。我希望这是有道理的。我认为解释比代码更有意义,因为您已经有了正确的代码并且只需要解释。


推荐阅读