c++ - 如何将列添加到多维 vector (C++)?

标签 c++ vector

这可能很简单,但我就是找不到解决方案。我创建了一个这样的二维 vector :

vector<vector<int> > matrix;
vector<int> row;

for (int i = 0; i < x;i++) {
    row.push_back(i);
}
for (int i = 0; i < x; i++) {
    matrix.push_back(row);
}

我遇到的问题是我现在想根据需要添加行和列,因为随着时间的推移我可能会用完矩阵空间,但我不知道该怎么做。这些行很简单,我可以将另一行推回到矩阵的底端...但我不知道如何添加另一列。

如果这个问题 super 愚蠢,我很抱歉,但我在编程方面还没有那么丰富的经验,而且我找不到任何关于将列添加到 2D vector 的特定问题的信息。

最佳答案

添加到您的代码中,想法是遍历矩阵中的每一行并将新元素插入每个 vector 。所有这些元素共同组成一个新列。

#include <iostream>
#include <vector>
using namespace std;

int main() {

    // Initialize a 3x3 matrix
    vector<vector<int>> matrix;
    vector<int> row;
    int x = 3;

    for (int i = 0; i < x; i++) {
        row.push_back(i);
    }

    for (int i = 0; i < x; i++) {
        matrix.push_back(row);
    }

    // Add a column; the matrix is now 3x4
    int newElement = 3;

    for (auto &row : matrix) {
        row.push_back(newElement);
    }

    // Print the matrix
    for (auto &row : matrix) {
        for (auto &cell : row) {
            cout << cell << ' ';
        }

        cout << endl;
    }

    return 0;
}

您可能希望将这段代码分成函数。

关于c++ - 如何将列添加到多维 vector (C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412007/

相关文章:

c++ - 为什么基于 int 的访问对 std::get(std::tuple) 不起作用?

c++ - 如何遍历 boost::variant<std::vector<int>, std::vector<String>>?

c++ - glfw 和 glew 不渲染(带有 VAO 的 glDrawElements)

c++ - 为什么 'virtual' 对于派生类中的重写方法是可选的?

c++ - 如何实现显示对象属性的系统//构建游戏引擎

c++ - 访问 vector 时出现运行时错误

arrays - Rust 是否有办法将函数/方法应用于数组或向量中的每个元素?

c++ - 将 c++ vector<float> 复制到 Obj-C Float32 数组的最快方法

python - 编译Boost.Python代码报错: library not found for -lpython3. 6m

c++ - 如何判断虚拟内存页是否已被锁定?